function get_synchronous_request(loc, params){
    try  {    
        if (netscape.security.PrivilegeManager.enablePrivilege) {      
            netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');  
            netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');  
        }  
    } catch (e) {    
    }
    if(!params) params='';
    try{
    var myAjax = new Ajax.Request(
        loc, 
		{method: 'post', postBody: params, asynchronous: false, encoding: 'ISO-8859-1'}
    );
    } catch (e) {alert(e.description);    
    }
    return myAjax.transport;
}

function get_asynchronous_request(loc,params,oncomplete_function){
    try  {    
        if (netscape.security.PrivilegeManager.enablePrivilege) {      
            netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');  
            netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');  
        }  
    } catch (e) {    
    }
    if(!params) params='';
    var myAjax = new Ajax.Request(
        loc, 
		{method: 'post', postBody: params, encoding: 'ISO-8859-1', onComplete: oncomplete_function}
    );
}

function get_xml_response(originalRequest){
    var response;
    try{
        response = originalRequest.responseXML.documentElement ;
    } catch(e){
        //if ff does not have privilege to documentElement
        response = (new DOMParser()).parseFromString(originalRequest.responseText, "text/xml").documentElement;  
    }
    return response;
}

// update/add a parameter in an url
function update_url_parameter(url,param,value){
    
   var str_return = "";
   var paramExist = false;
   var queryStringPos = url.indexOf("?");
   var paramSep = "?";
  if ( queryStringPos > -1 ){
    str_return = url.substr(0,queryStringPos);
    var strQueryString = url.substr(queryStringPos+1);
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(param + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        if(aParam[0] == param){
            str_return += paramSep+aParam[0]+"="+value;
            paramExist = true;
        } else{
            str_return += paramSep+aQueryString[iParam];
        }
      } else{
        str_return += paramSep+aQueryString[iParam];
      }
      paramSep = "&";
    }
  }
  if(paramExist == false) str_return = url+paramSep+param+"="+value;
  return unescape(str_return);
}

//get a parameter value in an url
function get_url_parameter(url,param){
  var str_return = "";
  if ( url.indexOf("?") > -1 ){
    var strQueryString = url.substr(url.indexOf("?")+1);
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(param + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        if(aParam[0] == param){
            str_return = aParam[1];
            break;
        }
      }
    }
  }
  return unescape(str_return);
}