function getFormValues(fobj,valFunc) 
{ 
   var str = ""; 
   var valueArr = null; 
   var val = ""; 
   var cmd = ""; 
   for(var i = 0;i < fobj.elements.length;i++) 
   { 
       switch(fobj.elements[i].type) 
       {   
	       case "hidden":
		                str += fobj.elements[i].name + 
                 "=" + uni2ent(escape(fobj.elements[i].value)) + "&"; 
		        break;
		   case "textarea":
		                str += fobj.elements[i].name + 
                 "=" + uni2ent(escape(fobj.elements[i].value)) + "&"; 
		        break;
           case "text": 
                /*if(valFunc) 
                { 
                    //use single quotes for argument so that the value of 
                    //fobj.elements[i].value is treated as a string not a literal 
                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")"; 
                    val = eval(cmd) 
                }*/
                str += fobj.elements[i].name + 
                 "=" + uni2ent(fobj.elements[i].value) + "&"; 
                 break; 
           case "select-one": 
                str += fobj.elements[i].name + 
                "=" + uni2ent(fobj.elements[i].options[fobj.elements[i].selectedIndex].value) + "&"; 
                break; 
		   case "password":
                str += fobj.elements[i].name + 
                 "=" + uni2ent(escape(fobj.elements[i].value)) + "&"; 
				 break;
		   case "checkbox":
		   		if(fobj.elements[i].checked == true) {
					str += fobj.elements[i].name + 
                 	
					"=" + 1 + "&";
				}
				 break;
		   case "radio":
		   		if(fobj.elements[i].checked == true) {
					str += fobj.elements[i].name + 
                 	
					"=" + fobj.elements[i].value + "&";
				}
				 break;
} 
   } 
   str = str.substr(0,(str.length - 1)); 
   return str; 
}
function uni2ent(srcTxt) {
  var entTxt = '';
  var c, hi, lo;
  var len = 0;
  for (var i=0, code; code=srcTxt.charCodeAt(i); i++) {
    var rawChar = srcTxt.charAt(i);
    // needs to be an HTML entity
    if (code > 255) {
      // normally we encounter the High surrogate first
      if (0xD800 <= code && code <= 0xDBFF) {
        hi  = code;
        lo = srcTxt.charCodeAt(i+1);
        // the next line will bend your mind a bit
        code = ((hi - 0xD800) * 0x400) + (lo - 0xDC00) + 0x10000;
        i++; // we already got low surrogate, so don't grab it again
      }
      // what happens if we get the low surrogate first?
      else if (0xDC00 <= code && code <= 0xDFFF) {
        hi  = srcTxt.charCodeAt(i-1);
        lo = code;
        code = ((hi - 0xD800) * 0x400) + (lo - 0xDC00) + 0x10000;
      }
      // wrap it up as Hex entity
      c = "" + code.toString(16).toUpperCase() + ";";
    }
    else {
      c = rawChar;
    }
    entTxt += c;
    len++;
  }
  return entTxt;
}
