
var util = {

  shouldDebug: false,

  // Note: Will fail in pathological cases (where the members contain
  // strings similar to describe() result).
  membersEqual: function(array1, array2) {
    return util.describe(array1)==util.describe(array2);
  },

  describe: function(obj) {
    if (obj==null) { return null; }
    switch(typeof(obj)) {
      case 'object': {
        var message = "";
        for (key in obj) {
          message += ", [" + key + "]: [" + obj[key] + "]";
        }
        if (message.length > 0) {
          message = message.substring(2); // chomp initial ', '
        }
        return message;
      }
      default: return "" + obj;
    }
  },

  debug: function(message) {
      if (this.shouldDebug) {
        alert("AjaxJS Message:\n\n" + message);
      }
  },

  error: function(message) {
      if (this.shouldDebug) {
        alert("AjaxJS ERROR:\n\n" + message);
      }
  },

  // trim() From Shawn Milo
  // https://lists.latech.edu/pipermail/javascript/2004-May/007567.html
  trim: function(str) {
    return str.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2');
  },

  strip: function(str) {
    return str.replace(/\s+/, "");
  }

}

function form_postForPlainText(file,formname,callbackfunction,arrParams,btnObj,callingContext)
{
	var bodyVars = new Array();
	for(var i = 0;i < formname.elements.length;i++)
	{
		switch(formname.elements[i].type)
		{
			case "text":
			case "password":
			case "textarea":
			case "hidden":
			case "file":
				bodyVars[formname.elements[i].name]= encodeURIComponent(formname.elements[i].value);
				break;
			case "select-one":
				bodyVars[formname.elements[i].name]=encodeURIComponent(formname.elements[i].options[formname.elements[i].selectedIndex].value);
				break;			
			case "select-multiple":
				var selectedArray = new Array();
				var count = 0;
				for (j=0;j<formname.elements[i].options.length;j++)
				{
					if (formname.elements[i].options[j].selected)
					{
						selectedArray[count] = formname.elements[i].options[j].value;
						count++;
					}
				}
				bodyVars[formname.elements[i].name]=encodeURIComponent(selectedArray);
				break;
			case "checkbox":
				if(formname.elements[i].checked == true)
					if (validObject(bodyVars[formname.elements[i].name]) && formname.elements[i].value.replace(/ /g,"") != "")
						bodyVars[formname.elements[i].name]+=","+encodeURIComponent(formname.elements[i].value);
					else if (!validObject(bodyVars[formname.elements[i].name]))
						bodyVars[formname.elements[i].name]=encodeURIComponent(formname.elements[i].value);
			break;
			case "radio":
				if(formname.elements[i].checked == true)                 
					bodyVars[formname.elements[i].name]= encodeURIComponent(formname.elements[i].value);
			break;			
		}
	}	
	if (validObject(btnObj) && typeof(btnObj) == "object" && (btnObj.type == "submit" || btnObj.type == "button"))
		bodyVars[btnObj.name]= btnObj.value;
	ajaxCaller.postForPlainText(file, bodyVars, callbackfunction,arrParams,callingContext);
}

function validObject(obj)
{ return (typeof(obj) != "undefined" && obj!= "undefined" && obj != null);}

function setJSFunctions(moduleName,strHTML) 
{ 
	var script;
	while( script = strHTML.match(/(<script[^>]+javascript[^>]+>)/i)) 
	{
		strHTML = strHTML.substr(strHTML.indexOf(RegExp.$1) + RegExp.$1.length); 
		 
		if (!(endscript = strHTML.match(/(<\/script>)/))) break; 
		 
		block = strHTML.substr(0, strHTML.indexOf(RegExp.$1)); 
		strHTML = strHTML.substring(block.length + RegExp.$1.length); 
		 
		var oScript = document.createElement('script'); 
		oScript.text = block;
		window.document.getElementById(moduleName).appendChild(oScript);
	} 
}