/*************
	Send in an Array of formNames and retrieve All name/value pairs for a POST
    ********************************************************************************/
function getFormData(formNames, exceptions, properFormArraySize, thisdebug) {

    if(thisdebug == 'true') {
        alert("|"+properFormArraySize+"|");
    }

    if(isArray(formNames)) {
      var data = "";

      for(var j = 0; j < formNames.length; j++) {

        var form = parent.document.forms[formNames[j]];
        var fields = form.elements;
        for (i=0;i<fields.length;i++){
          if (fields[i].type && fields[i].type.indexOf("button")==-1 && fields[i].type.indexOf("submit")==-1){
            if (exceptions.indexOf(fields[i].name) == -1) {
            	if(fields[i].type.indexOf("checkbox") > -1) {
            		if(fields[i].checked) {
            			data = data + fields[i].name + "=" + escape(fields[i].value) + "&";
            		} else {
            			data = data + fields[i].name + "=&";
            		}
            	}
            	else if(fields[i].type.indexOf("radio") > -1) {
				    		if(fields[i].checked) {
				    			data = data + fields[i].name + "=" + escape(fields[i].value) + "&";
				    		}
            	}
            	else {
          		  data = data + fields[i].name + "=" + escape(fields[i].value) + "&";
              }
            }
          }
        }
      }
    }
    else if(isString(formNames)) {
      if(thisdebug == 'true') {
          alert("Passed in the Array of formNames as size: "+properFormArraySize+" but it believes that its the size of : "+formNames.length);
      }
      var data = "";

      var formNamesArray = formNames.split(",");
      for(var j = 0; j < formNamesArray.length; j++) {

        var form = parent.document.forms[formNamesArray[j]];
        var fields = form.elements;
        for (i=0;i<fields.length;i++){
          if (fields[i].type && fields[i].type.indexOf("button")==-1 && fields[i].type.indexOf("submit")==-1){
            if (exceptions.indexOf(fields[i].name) == -1) {
            	if(fields[i].type.indexOf("checkbox") > -1) {
            		if(fields[i].checked) {
            			data = data + fields[i].name + "=" + escape(fields[i].value) + "&";
            		} else {
            			data = data + fields[i].name + "=&";
            		}
            	}
            	else if(fields[i].type.indexOf("radio") > -1) {
				    		if(fields[i].checked) {
				    			data = data + fields[i].name + "=" + escape(fields[i].value) + "&";
				    		}
            	}
            	else {
            		data = data + fields[i].name + "=" + escape(fields[i].value) + "&";
              }
            }
          }
        }
      }
    }

    if(thisdebug == 'true') {
        alert(data);
    }

    return data;
}

/*************
	Get the index of this field (using its name) from an Array of input elements in a form with same name
    ********************************************************************************/
function getFieldIndex(thisField) {
	var tempForm = thisField.form;
	var tempFieldName = thisField.name;
	
	var fields = tempForm.elements;
	var returnIndex = '';
	var fieldCount = -1;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].name == tempFieldName) {
			fieldCount++;
			//alert('fieldCount : '+fieldCount);
			if(fields[x] == thisField) {
				returnIndex = fieldCount;
				//alert("returnIndex : "+returnIndex);
			}
		}
	}
	
	return returnIndex;
}

/*************
	Get the index of this field (using its id) from an Array of input elements in a form with same name
    ********************************************************************************/
function getFieldIndexById(thisField) {
	var tempForm = thisField.form;
	var tempFieldName = thisField.name;
	var tempFieldID = thisField.id;
	
	var fields = tempForm.elements;
	var returnIndex = '';
	var fieldCount = -1;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].name == tempFieldName && fields[x].id == tempFieldID) {
			fieldCount++;
			//alert('fieldCount : '+fieldCount);
			if(fields[x] == thisField) {
				returnIndex = fieldCount;
				//alert("returnIndex : "+returnIndex);
			}
		}
	}
	
	return returnIndex;
}

/*************
	Get the number of field elements with same name in an Array of input elements in a form
    ********************************************************************************/
function getFieldCount(thisForm, fieldName) {
	var fields = thisForm.elements;
	var returnIndex = '';
	var fieldCount = 0;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].name == fieldName) {
			fieldCount++;
		}
	}
	
	return fieldCount;
}

/*************
	Get the number of field elements with same ID in an Array of input elements in a form
    ********************************************************************************/
function getFieldCountByID(thisForm, fieldID) {
	var fields = thisForm.elements;
	var returnIndex = '';
	var fieldCount = 0;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].id == fieldID) {
			fieldCount++;
		}
	}
	
	return fieldCount;
}

/*************
	Get the input field (using its name) from an Array of input elements in a form using the name and index
    ********************************************************************************/
function getField(thisForm, fieldName, fieldIndex) {
	var fields = thisForm.elements;
	var returnIndex = '';
	var fieldCount = 0;
	var returnField;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].name == fieldName) {
			if(fieldCount == fieldIndex) {
				returnField = fields[x];
			}
			fieldCount++;
		}
	}
	
	return returnField;
}

/*************
	Get the input field (using its id)  from an Array of input elements in a form using the name and index
    ********************************************************************************/
function getFieldByID(thisForm, fieldName, fieldID, fieldIndex) {
	var fields = thisForm.elements;
	//alert("thisForm, fieldName, fieldID, fieldIndex : "+thisForm+", "+fieldName+", "+fieldID+", "+fieldIndex);
	var returnIndex = '';
	var fieldCount = 0;
	var returnField;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].name == fieldName && fields[x].id == fieldID) {
			if(fieldCount == fieldIndex) {
				returnField = fields[x];
			}
			fieldCount++;
		}
	}
	
	return returnField;
}

/*************
	Get the input field (using its id)  from an Array of input elements in a form using the index
    ********************************************************************************/
function getFieldByIDOnly(thisForm, fieldID, fieldIndex) {
	var fields = thisForm.elements;
	//alert("thisForm, fieldID, fieldIndex : "+thisForm+", "+fieldID+", "+fieldIndex);
	var returnIndex = '';
	var fieldCount = 0;
	var returnField;
	for (var x=0; x<fields.length; x++) {
		if(fields[x].id == fieldID) {
			if(fieldCount == fieldIndex) {
				returnField = fields[x];
			}
			fieldCount++;
		}
	}
	
	return returnField;
}
