
function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")+1);
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName + "=") > -1 ) {
        var aParam = aQueryString[iParam].split("=");
	if (aParam[0] == strParamName) {
          strReturn = aParam[1];
          break;
	} else {
	  alert("getURLParam(" + strParamName + "), mismatches:" + aParam[0]);
	}
      }
    }
  }
  return unescape(strReturn);
}

function getURLFrom(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf(strParamName) > -1 ){
    strReturn = strHref.substr(strHref.indexOf(strParamName));
  }
  return strReturn;
}

function getParentURLParam(strParamName){
  var strReturn = "";
  var strHref = parent.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")+1);
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName + "=") > -1 ) {
        var aParam = aQueryString[iParam].split("=");
	if (aParam[0] == strParamName) {
          strReturn = aParam[1];
          break;
	} else {
	  alert("getURLParam(" + strParamName + "), mismatches:" + aParam[0]);
	}
      }
    }
  }
  return unescape(strReturn);
}

function URLDecode(str)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = str;
   var plaintext = "";
   var i = 0;
   if(encoded != null) {
	   while (i < encoded.length) {
		   var ch = encoded.charAt(i);
		   if (ch == "+") {
			   plaintext += " ";
			   i++;
		   } else if (ch == "%") {
				if (i < (encoded.length-2) 
						&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
						&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
					plaintext += unescape( encoded.substr(i,3) );
					i += 3;
				} else {
					//alert( 'Bad escape combination near ...' + encoded.substr(i) );
					plaintext += "%";
					i++;
				}
			} else {
			   plaintext += ch;
			   i++;
			}
		} // while
	}
   return plaintext;
};