	function trim(str)
	{
		var startIndex=-1;
		var endIndex=-1;
		for(var i = 0; i < str.length; i++) 
		{
			c = str.charAt(i);
			if (c != ' ' && c != '\n' && c != '\t')
			{
				startIndex = i;
				break;
			}
		}
		for(var i = str.length-1; i >=0 ; i--) {
			c = str.charAt(i);
			if (c != ' ' && c != '\n' && c != '\t')
			{
				endIndex = i;
				break;
			}
		}
		if(startIndex==-1)
		{
			return "";
		}
		else
		{
			return str.substring(startIndex, endIndex+1);
		}
		
	} 

	function trimAllFields(frm)
	{
		for (var i=0; i<frm.elements.length; i++) 
		{
			if (frm.elements[i].type.indexOf("reset") == -1 && frm.elements[i].type.indexOf("button") == -1 && frm.elements[i].type.indexOf("hidden") == -1 &&	frm.elements[i].type.indexOf("select") == -1 && frm.elements[i].type.indexOf("radio") == -1 && 	frm.elements[i].type.indexOf("check") == -1 && frm.elements[i].type.indexOf("file") == -1) 
			{
				frm.elements[i].value = trim(frm.elements[i].value);
			}
		}

	}

	function validateDate(field, obj) {
       var bValid = true;
       var focusField = null;
       var i = 0;
       var fields = new Array();
       //var oDate = eval('new ' + jcv_retrieveFormName(form) +  '_DateValidations()');

       //for (var x in oDate) {
       //     if (!jcv_verifyArrayElement(x, oDate[x])) {
       //         continue;
       ///    }
       //    var field = form[oDate[x][0]];
       //    if (!jcv_isFieldPresent(field)) {
       //     continue;
       //    }
           var value = field.value;
           var isStrict = true;
           var datePattern = obj[2]("datePatternStrict");
           // try loose pattern
           if (datePattern == null) {
               datePattern = obj[2]("datePattern");
			   isStrict = false;
           }  
           if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea') &&
               (value.length > 0) && (datePattern.length > 0)) {

			     
                 var MONTH = "MM";
                 var DAY = "dd";
                 var YEAR = "yyyy";
                 var orderMonth = datePattern.indexOf(MONTH);
                 var orderDay = datePattern.indexOf(DAY);
                 var orderYear = datePattern.indexOf(YEAR);

				 var month,day,year;

				 if ((orderDay < orderYear && orderDay > orderMonth)) {
					 //day is between month and year.. mm/dd/yyyy or mmm/dd/yyyy
					 var iDelim1 = orderMonth + orderDay-1;
		             var iDelim2 = orderDay + DAY.length;
					 var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
				     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);

					 var delim1Indx = value.indexOf(delim1, 0);

					 month = value.substring(0, delim1Indx);
					 MONTH = datePattern.substring(orderMonth, iDelim1);
					 var delim2Indx = value.indexOf(delim2, delim1Indx+1);
					 day = value.substring(delim1Indx+1, delim2Indx);
					 year = value.substring(delim2Indx+1);
				 } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
					 //month is between day and year dd/MM/yyyy or dd/MMM/yyyy
					 var iDelim1 = orderDay + DAY.length; //orderMonth + orderDay-1;
		             var iDelim2 = orderYear - 1;//DAY.length;
					 var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
				     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);

					 var delim1Indx = value.indexOf(delim1, 0);

					 day = value.substring(0, delim1Indx);

					 var delim2Indx = value.indexOf(delim2, delim1Indx+1);
					 month = value.substring(delim1Indx+1, delim2Indx);
					 MONTH = datePattern.substring(iDelim1+1, iDelim2);
					 year = value.substring(delim2Indx+1);
				 } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
					 //month is between year and day yyyy/MM/dd or yyyy/MMM/dd
					 var iDelim1 = orderYear + YEAR.length; //orderMonth + orderDay-1;
		             var iDelim2 = orderDay - 1;//DAY.length;
					 var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
				     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);

					 var delim1Indx = value.indexOf(delim1, 0);
					 year = value.substring(0, delim1Indx);

					 var delim2Indx = value.indexOf(delim2, delim1Indx+1);
					 month = value.substring(delim1Indx+1, delim2Indx);
					 MONTH = datePattern.substring(iDelim1+1, iDelim2);
					 day = value.substring(delim2Indx+1);
				 }
				 
				 if (day.length <= 0 || day.length > 2 || year.length < 4 || (MONTH.length >= 3 && month.length != 3)  || (MONTH.length < 3 && (month.length <= 0 || month.length > 2) ))
				 {
					 bValid = false;
					 if (i == 0) {
						 focusField = field;
					 }
					 fields[i++] = obj[1];
				 } else {
					 var iMonth = -1;
					 if (MONTH.length >= 3)
					 {
						iMonth = getMonthValue(month);
					 } else {
						iMonth = month;
					 }
					 if (iMonth < 1)
					 {
						 bValid = false;
						 if (i == 0) {
							 focusField = field;
						 }
						 fields[i++] = obj[1];
					 } else {
						 if (!jcv_isValidDate(day, iMonth, year)) {
							 if (i == 0) {
								 focusField = field;
							 }
							 fields[i++] = obj[1];
							 bValid =  false;
						 }
					 }
				 }
			}
     //  }
       if (fields.length > 0) {
          jcv_handleErrors(fields, focusField);
       }
       return bValid;
    }
    
    function jcv_isValidDate(day, month, year) {
	    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;
    }


    

    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * Check to see if fields are a valid float.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateFloat(form) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
 
        var oFloat = eval('new ' + jcv_retrieveFormName(form) +  '_FloatValidations()');
        for (var x in oFloat) {
            if (!jcv_verifyArrayElement(x, oFloat[x])) {
                continue;
            }
        	var field = form[oFloat[x][0]];
            if (!jcv_isFieldPresent(field)) {
              continue;
            }
        	
            if ((field.type == 'hidden' ||
                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('.');
                    //Strip off leading '0'
                    var zeroIndex = 0;
                    var joinedString= tempArray.join('');
                    while (joinedString.charAt(zeroIndex) == '0') {
                        zeroIndex++;
                    }
                    var noZeroString = joinedString.substring(zeroIndex,joinedString.length);

                    if (!jcv_isAllDigits(noZeroString) || tempArray.length > 2) {
                        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 (!bValid) {
				break;
			}
        }
        if (fields.length > 0) {
           jcv_handleErrors(fields, focusField);
        }
        return bValid;
    }


    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * A field is considered valid if greater than the specified minimum.
    * Fields are not checked if they are disabled.
    * <p>
    * <strong>Caution:</strong> Using <code>validateMinLength</code> on a password field in a 
    *  login page gives unnecessary information away to hackers. While it only slightly
    *  weakens security, we suggest using it only when modifying a password.</p>
    * @param form The form validation is taking place on.
    */
    function validateMinLength(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();

        var oMinLength = eval('new ' + jcv_retrieveFormName(form) +  '_minlength()');

        for (var x in oMinLength) {
            if (!jcv_verifyArrayElement(x, oMinLength[x])) {
                continue;
            }
            var field = form[oMinLength[x][0]];
            if (!jcv_isFieldPresent(field)) {
              continue;
            }

            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'password' ||
                field.type == 'textarea')) {

                /* Adjust length for carriage returns - see Bug 37962 */
                var lineEndLength = oMinLength[x][2]("lineEndLength");
                var adjustAmount = 0;
                if (lineEndLength) {
                    var rCount = 0;
                    var nCount = 0;
                    var crPos = 0;
                    while (crPos < field.value.length) {
                        var currChar = field.value.charAt(crPos);
                        if (currChar == '\r') {
                            rCount++;
                        }
                        if (currChar == '\n') {
                            nCount++;
                        }
                        crPos++;
                    }
                    var endLength = parseInt(lineEndLength);
                    adjustAmount = (nCount * endLength) - (rCount + nCount);
                }

                var iMin = parseInt(oMinLength[x][2]("minlength"));
                if ((trim(field.value).length > 0) && ((field.value.length + adjustAmount) < iMin)) {
                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oMinLength[x][1];
                    isValid = false;
                }
            }
			if (!isValid) {
				break;
			}
        }
        if (fields.length > 0) {
           jcv_handleErrors(fields, focusField);
        }
        return isValid;
    }


   /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * Check to see if fields are in a valid float range.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateFloatRange(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        
        var oRange = eval('new ' + jcv_retrieveFormName(form) +  '_floatRange()');
        for (var x in oRange) {
            if (!jcv_verifyArrayElement(x, oRange[x])) {
                continue;
            }
            var field = form[oRange[x][0]];
            if (!jcv_isFieldPresent(field)) {
              continue;
            }
            
            if ((field.type == 'hidden' ||
                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 (!isValid) {
				break;
			}
        }
        if (fields.length > 0) {
            jcv_handleErrors(fields, focusField);
        }
        return isValid;
    }

    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */

  /**
  * This is a place holder for common utilities used across the javascript validation
  *
  **/

  /**
   * Retreive the name of the form
   * @param form The form validation is taking place on.
   */
  function jcv_retrieveFormName(form) {

      // Please refer to Bugs 31534, 35127, 35294, 37315 & 38159
      // for the history of the following code
      var formName;
    
      if (form.getAttributeNode) {
          if (form.getAttributeNode("id") && form.getAttributeNode("id").value) {
              formName = form.getAttributeNode("id").value;
          } else {
              formName = form.getAttributeNode("name").value;
          }
      } else if (form.getAttribute) {
          if (form.getAttribute("id")) {
              formName = form.getAttribute("id");
          } else {
              formName = form.attributes["name"];
          }
      } else {
          if (form.id) {
              formName = form.id;
          } else {
              formName = form.name;
          }
      }
	      return formName;

  }  

  /**
   * Handle error messages.
   * @param messages Array of error messages.
   * @param focusField Field to set focus on.
   */
  function jcv_handleErrors(messages, focusField) {
      if (focusField && focusField != null) {
          var doFocus = true;
          if (focusField.disabled || focusField.type == 'hidden') {
              doFocus = false;
          }
          if (doFocus && 
              focusField.style && 
              focusField.style.visibility &&
              focusField.style.visibility == 'hidden') {
              doFocus = false;
          }
          if (doFocus) {
              focusField.focus();
          }
      }
      alert(messages.join('\n'));
  }

  /**
   * Checks that the array element is a valid
   * Commons Validator element and not one inserted by
   * other JavaScript libraries (for example the
   * prototype library inserts an "extends" into
   * all objects, including Arrays).
   * @param name The element name.
   * @param value The element value.
   */
  function jcv_verifyArrayElement(name, element) {
      if (element && element.length && element.length == 3) {
          return true;
      } else {
          return false;
      }
  }

  /**
   * Checks whether the field is present on the form.
   * @param field The form field.
   */
  function jcv_isFieldPresent(field) {
      var fieldPresent = true;
      if (field == null || field == undefined) {
          fieldPresent = false;
      } else {
          if (field.disabled) {
              fieldPresent = false;
          }
      }
      return fieldPresent;
  }

  /**
   * Check a value only contains valid numeric digits
   * @param argvalue The value to check.
   */
  function jcv_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;
  }

  /**
   * Check a value only contains valid decimal digits
   * @param argvalue The value to check.
   */
  function jcv_isDecimalDigits(argvalue) {
      argvalue = argvalue.toString();
      var validChars = "0123456789";

      var startFrom = 0;
      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;
  }


    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * A field is considered valid if less than the specified maximum.
    * Fields are not checked if they are disabled.
    * <p>
    * <strong>Caution:</strong> Using <code>validateMaxLength</code> on a password field in a 
    *  login page gives unnecessary information away to hackers. While it only slightly
    *  weakens security, we suggest using it only when modifying a password.</p>
    * @param form The form validation is taking place on.
    */
    function validateMaxLength(field, obj) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
 
       // var oMaxLength = eval('new ' + jcv_retrieveFormName(form) +  '_maxlength()');        
       // for (var x in oMaxLength) {
             if (!jcv_isFieldPresent(field)) {
            	fields[i++] = obj[1];
				isValid=false;
            }

            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'password' ||
                field.type == 'textarea')) {

                /* Adjust length for carriage returns - see Bug 37962 */
                var lineEndLength = obj[2]("lineEndLength");
                var adjustAmount = 0;
                if (lineEndLength) {
                    var rCount = 0;
                    var nCount = 0;
                    var crPos = 0;
                    while (crPos < field.value.length) {
                        var currChar = field.value.charAt(crPos);
                        if (currChar == '\r') {
                            rCount++;
                        }
                        if (currChar == '\n') {
                            nCount++;
                        }
                        crPos++;
                    }
                    var endLength = parseInt(lineEndLength);
                    adjustAmount = (nCount * endLength) - (rCount + nCount);
                }

                var iMax = parseInt(obj[2]("maxlength"));
                if ((field.value.length + adjustAmount)  > iMax) {
                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = obj[1];
                    isValid = false;
                }
            }
			if (fields.length > 0) {
           		jcv_handleErrors(fields, focusField);
       		 }
       		 return isValid;
    	}


    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    *  Check to see if fields must contain a value.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */

    function validateRequired(field, obj) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();

        //var oRequired = obj[0]eval('new ' + jcv_retrieveFormName(form) +  '_required()');

        //for (var x in oRequired) {
          
		if (!jcv_isFieldPresent(field)) {
			fields[i++] = obj[1];
			isValid=false;
		} else if ((field.type == 'hidden' ||
			field.type == 'text' ||
			field.type == 'textarea' ||
			field.type == 'file' ||
			field.type == 'radio' ||
			field.type == 'checkbox' ||
			field.type == 'select-one' ||
			field.type == 'password')) {

			var value = '';
			// get field's value
			if (field.type == "select-one") {
				var si = field.selectedIndex;
				if (si >= 0) {
					value = field.options[si].value;
				}
			} else if (field.type == 'radio' || field.type == 'checkbox') {
				if (field.checked) {
					value = field.value;
				}
			} else {
				value = field.value;
			}

			if (trim(value).length == 0) {

				if ((i == 0) && (field.type != 'hidden')) {
					focusField = field;
				}
				isValid = false;
				fields[i++] = obj[1];
			}
		} else if (field.type == "select-multiple") { 
			var numOptions = field.options.length;
			lastSelected=-1;
			for(loop=numOptions-1;loop>=0;loop--) {
				if(field.options[loop].selected) {
					lastSelected = loop;
					value = field.options[loop].value;
					break;
				}
			}
			if(lastSelected < 0 || trim(value).length == 0) {
				if(i == 0) {
					focusField = field;
				}
				isValid=false;
				fields[i++] = obj[1];
			}
		} else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
			isChecked=-1;
			for (loop=0;loop < field.length;loop++) {
				if (field[loop].checked) {
					isChecked=loop;
					break; // only one needs to be checked
				}
			}
			if (isChecked < 0) {
				if (i == 0) {
					focusField = field[0];
				}
				isValid=false;
				fields[i++] = obj[1];
			}
		}   
        if (fields.length > 0) {
           jcv_handleErrors(fields, focusField);
        }
        return isValid;
    }
    
    // Trim whitespace from left and right sides of s.
    function trim(s) {
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
    }


    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * Check to see if fields are a valid integer.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateInteger(field, obj) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();

		if (!jcv_isFieldPresent(field)) {
		    fields[i++] = obj[1];
			bValid=false;
		} else if ((field.type == 'hidden' ||
		    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 (!jcv_isDecimalDigits(value)) {
		            bValid = false;
		            if (i == 0) {
		                focusField = field;
		            }
		            fields[i++] = obj[1];
		
		        } else {
		            var iValue = parseInt(value, 10);
		            if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
		                if (i == 0) {
		                    focusField = field;
		                }
		                fields[i++] = obj[1];
		                bValid = false;
		           }
		       }
		   }
		}
		if (fields.length > 0) {
           jcv_handleErrors(fields, focusField);
        }
        return bValid;
    }


    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * Check to see if fields is in a valid integer range.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateIntRange(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
 
        var oRange = eval('new ' + jcv_retrieveFormName(form) +  '_intRange()');        
        for (var x in oRange) {
            if (!jcv_verifyArrayElement(x, oRange[x])) {
                continue;
            }
            var field = form[oRange[x][0]];
            if (jcv_isFieldPresent(field)) {
                var value = '';
                if (field.type == 'hidden' ||
                    field.type == 'text' || field.type == 'textarea' ||
                    field.type == 'radio' ) {
                    value = field.value;
                }
                if (field.type == 'select-one') {
                    var si = field.selectedIndex;
                    if (si >= 0) {
                        value = field.options[si].value;
                    }
                }
                if (value.length > 0) {
                    var iMin = parseInt(oRange[x][2]("min"));
                    var iMax = parseInt(oRange[x][2]("max"));
                    var iValue = parseInt(value, 10);
                    if (!(iValue >= iMin && iValue <= iMax)) {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oRange[x][1];
                        isValid = false;
                    }
                }
			}
			if (!isValid) {
				break;
			}
        }
        if (fields.length > 0) {
            jcv_handleErrors(fields, focusField);
        }
        return isValid;
    }




    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * Check to see if fields are a valid email address.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateEmail(field, obj) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();

	    if (!jcv_isFieldPresent(field)) {
		    fields[i++] = obj[1];
			bValid=false;
		} else if ((field.type == 'hidden' || 
	         field.type == 'text' ||
	         field.type == 'textarea') &&
	        (field.value.length > 0)) {
	        if (!jcv_checkEmail(field.value)) {
	            if (i == 0) {
	                focusField = field;
	            }
	            fields[i++] = obj[1];
	            bValid = false;
	            
	        }
	    }
        if (fields.length > 0) {
            jcv_handleErrors(fields, focusField);
        }
       
        return bValid;
    }

	function validateUrl(field, obj) {
		var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();

	    if (!jcv_isFieldPresent(field)) {
		    fields[i++] = obj[1];
			bValid=false;
		} else if ((field.type == 'hidden' || 
	         field.type == 'text' ||
	         field.type == 'textarea') &&
	        (field.value.length > 0)) {
	        if (!jcv_checkUrl(field.value)) {
	            if (i == 0) {
	                focusField = field;
	            }
	            fields[i++] = obj[1];
	            bValid = false;
	            
	        }
	    }
        if (fields.length > 0) {
            jcv_handleErrors(fields, focusField);
        }
       
        return bValid;
	}

	function jcv_checkUrl(url){
		var flag = 1;
		
	
		var chkString = "http://";
		if(url.length < chkString.length) {
			flag = 0;
		} else {
			var i = 0;
			for(i = 0 ; i < chkString.length ; i++) {
				if(url.charAt(i) != chkString.charAt(i)) {
					flag = 0;
					break;
				}
			}
		}
	
		var flagHttps=1;
		if (flag == 0) {
	
			chkString = "https://";
			if(url.length < chkString.length) {
				flagHttps = 0;
			} else {
				var i = 0;
				for(i = 0 ; i < chkString.length ; i++) {
					if(url.charAt(i) != chkString.charAt(i)) {
						flagHttps = 0;
						break;
					}
				}
			}
		} 

		var flagJs=1;
		if (flag == 0 && flagHttps ==0) {
			chkString = "javascript:";
			if(url.length < chkString.length) {
				flagJs = 0;
			} else {
				var i = 0;
				for(i = 0 ; i < chkString.length ; i++) {
					if(url.charAt(i) != chkString.charAt(i)) {
						flagJs = 0;
						break;
					}
				}
			}
	
			if (flagJs==0) {
				return false;
			}
		} 

		return true;
	}


    /**
     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
     * http://javascript.internet.com
     */
    function jcv_checkEmail(emailStr) {
        if (emailStr.length == 0) {
            return true;
        }
        // TLD checking turned off by default
        var checkTLD=0;
        var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
        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];
        for (i=0; i<user.length; i++) {
            if (user.charCodeAt(i)>127) {
                return false;
            }
        }
        for (i=0; i<domain.length; i++) {
            if (domain.charCodeAt(i)>127) {
                return false;
            }
        }
        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 atomPat=new RegExp("^" + atom + "$");
        var domArr=domain.split(".");
        var len=domArr.length;
        for (i=0;i<len;i++) {
            if (domArr[i].search(atomPat)==-1) {
                return false;
            }
        }
        if (checkTLD && domArr[domArr.length-1].length!=2 && 
            domArr[domArr.length-1].search(knownDomsPat)==-1) {
            return false;
        }
        if (len<2) {
            return false;
        }
        return true;
    }

    /*$RCSfile: validations.js,v $ $Rev: 376673 $ $Date: 2008/06/12 05:16:11 $ */
    /**
    * Check to see if password and confirm password match
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validatePassword(field1,field2,obj) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();

		if (!jcv_isFieldPresent(field1) || !jcv_isFieldPresent(field2) ) {
		    fields[i++] = obj[1];
			bValid=false;
		} 
		else if ( (field1.type == 'password'  &&  field1.value.length > 0 ) && 
				  (field2.type == 'password'  &&  field2.value.length > 0 ) 
				) {
	        if (field1.value!=field2.value) {
	            if (i == 0) {
	                focusField = field2;
	            }
	            fields[i++] = obj[2];
	            bValid = false;
	            
	        }
	    }
        if (fields.length > 0) {
			focusField.value="";
			field1.value="";
            jcv_handleErrors(fields, focusField);
        }
        return bValid;
    }





function openWindow(url) {
	window.open(url, "PAAIO", "width=580,height=700,status=no,resizable=no,scrollbars=1,top=200,left=200");
}


function toggleAllCheckBoxes(frm, chkboxName, allChkBoxName) {
	var j=0;
	var count=frm.length;
	var status = frm.elements[allChkBoxName].checked;
	for(var i=0; i< count; i++) {
		if(frm.elements[i].type == "checkbox" && frm.elements[i].name==chkboxName){
			j++;
			frm.elements[i].checked = status;
		}
		if (status) {
			boxCount=j;
		} else {
			boxCount=0;
		}
	}
}

function countCheckedBoxes(frm, chkboxName) {
	var j=new Array();
	j[0]=0;
	j[1]=0;
	var count=frm.length;
	for(var i=0; i< count; i++) {
		if(frm.elements[i].type == "checkbox" && frm.elements[i].name==chkboxName) {
			j[0]++;
			if (frm.elements[i].checked) {
				j[1]++;
			}
		}
	}
	return j;
}

function refreshBoxes(frm, obj, chkboxName, allChkBoxName) {
	var status = obj.checked;
	var boxCount = countCheckedBoxes(frm, chkboxName);
	if (status)
	{
		if (boxCount[0] == boxCount[1])
		{
			frm.elements[allChkBoxName].checked = true;
		}
	} else {
		if (boxCount[1] != boxCount[0])
		{
			frm.elements[allChkBoxName].checked = false;
		}
	}
}