create or replace package body wmp_portal
as
  function get_nls_language return varchar2  
  is   
    l_lang varchar2(128) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_lang := 'us';
    else                 
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwctx_api.get_nls_language from dual' 
          into l_lang; 
    	exception 
       	when others then
           l_lang := 'us';
    	end;
  	end if;    
    return l_lang;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function get_proc_path (
    p_url in varchar2,
    p_schema in varchar2 := wmp_constants.USER_SCHEMA
    )
  return varchar2  
  is   
    l_schema varchar2(128) := p_schema;   
    l_url varchar2(4000) := p_url;
    l_path varchar2(4000) := null;
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_schema := get_user;
      l_path := l_schema || '.' || l_url;
    else                 
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwctx_api.get_proc_path(:1, :2) from dual' 
          into l_path 
          using l_url, l_schema; 
    	exception 
       	when others then
           l_path := null;
    	end;
  	end if;    
    return l_path;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function get_product_version return varchar2  
  is   
    l_name varchar2(128) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = false then
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwctx_api.get_product_version from dual' into l_name; 
    	exception 
       	when others then
           l_name := null;
    	end;
  	end if;    
    return l_name;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
/*
wwui_api_portlet.portlet_text(
  ''
  , 1)
			htp.p(wwui_api_portlet.portlet_heading(wmp_api_nls.get_string('50017','50000'), 1)); 
  
*/
  function user_name (
    p_id in number
    )
  return varchar2  
  is   
    l_id number := p_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    l_text varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      return get_user;
    end if;
		execute immediate '
      declare 
        l_string varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
      begin
        l_string := ~portalSchema.wwsec_api.user_name(:1);
        :2 := l_string;
      exception
        when others then
          null;
      end;
		' using in l_id, out l_text;   
    return l_text;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function group_name (
    p_group_id in number
    )
  return varchar2  
  is   
    l_id number := p_group_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    l_text varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      return CLIENTGROUPNAME;
    end if;
		execute immediate '
      declare 
        l_string varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
      begin
        l_string := ~portalSchema.wwsec_api.group_name(:1);
        :2 := l_string;
      exception
        when others then
          null;
      end;
		' using in l_id, out l_text;   
    return l_text;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  
  function portlet_heading (
    p_string in varchar2,
    p_level in number
   )
  return varchar2  
  is   
    l_string varchar2(4000) := p_string;
    l_level number := p_level;
    l_text varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
	return '' || l_string || '';
    end if;
		execute immediate '
      declare 
        l_string varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
      begin
        l_string := ~portalSchema.wwui_api_portlet.portlet_heading(:1, :2);
        :3 := l_string;
      exception
        when others then
          null;
      end;
		' using in l_string, in l_level, out l_text;   
    return l_text;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function portlet_text (
    p_string in varchar2,
    p_level in number
   )
  return varchar2  
  is   
    l_string varchar2(4000) := p_string;
    l_level number := p_level;
    l_text varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
	return '' || l_string || '';
    end if;
		execute immediate '
      declare 
        l_string varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
      begin
        l_string := ~portalSchema.wwui_api_portlet.portlet_text(:1, :2);
        :3 := l_string;
      exception
        when others then
          null;
      end;
		' using in l_string, in l_level, out l_text;   
    return l_text;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function group_id(
    p_name in varchar2 := null
    )
  return number  
  is   
    l_name varchar2(128) := p_name;
    l_id number := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_id := CLIENTGROUPID;
    else
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwsec_api.group_id(:1) from dual' 
          into l_id
          using l_name; 
    	exception 
       	when others then
           l_id := null;
    	end;
  	end if;    
    return l_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function id(
    p_user_name in varchar2 := null
    )
  return number  
  is   
    l_user_name varchar2(128) := p_user_name;
    l_id number := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_id := CLIENTUSERID;
    else
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwsec_api.id(:1) from dual' 
          into l_id
          using l_user_name; 
    	exception 
       	when others then
           l_id := null;
    	end;
  	end if;    
    return l_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  procedure set_value (
    p_name in varchar2,
    p_value in varchar2
    )
  is
    l_count number := 0;
  begin
    	select	count(*)
    	into	l_count
    	from 	wmp_preferences
    	where	path = 'OWBREPOSITORY'
    	and	name = lower(p_name);
    	
    	if l_count = 0 then 
    		insert into wmp_preferences (PATH, LEVEL_TYPE, LEVEL_ID, NAME, VALUE) values (
    			'OWBREPOSITORY',
    			'S',
    			0,
    			lower(p_name), 
    			p_value
    			);
    	else
    		update 	wmp_preferences
    		set	value = p_value
    		where	path = 'OWBREPOSITORY'
    		and	level_type = 'S' 
    		and	level_id = 0
    		and	name = lower(p_name);
    	end if;
    	commit;
  exception
    when others then
    	return;
  end;
  function get_value (
    p_name in varchar2
    )
  return varchar2
  is
    l_value varchar2(256) := null;
  begin
    	select	value
    	into	l_value
    	from 	wmp_preferences
    	where	path = 'OWBREPOSITORY'
    	and	level_type = 'S'
    	and	level_id = 0
    	and	name = lower(p_name);
    return l_value;
  exception
    when others then
    	return null;
  end;
  function get_user return varchar2
  is
    l_name varchar2(128) := null;
  begin
    if wmp_mode.isClient = true then
      l_name := '%user';
      --l_name := get_value('OWBREPOSITORY');
    	if l_name is null then
        select user into l_name from dual;
    	end if;
    else
      begin
        execute immediate 'select ~portalSchema.wwctx_api.get_user from dual' into l_name;
    	exception
        when others then
          l_name := null;
        end;
  	end if;
    return l_name;
  end;
  function get_sessionid return NUMBER
  is   
    l_id number := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_id := CLIENTSESSIONID;
    else
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwctx_api.get_sessionid from dual' into l_id; 
    	exception 
       	when others then
           l_id := null;
    	end;
  	end if;    
    return l_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  function get_user_id return number  
  is   
    l_id number := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_id := CLIENTUSERID;
    else
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwctx_api.get_user_id from dual' into l_id; 
    	exception 
       	when others then
           l_id := null;
    	end;
  	end if;    
    return l_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
	function group_exists(p_group_id in number) return boolean
	is
		l_count number := 0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
		l_group_id number := p_group_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
	begin
    if wmp_mode.isClient = true then
      return true;
    end if;
    
		execute immediate '
      declare 
    		l_group ~portalSchema.wwsec_group$%rowtype;
      begin
        l_group := ~portalSchema.wwsec_api.group_info(:1);
        :2 := 1;
      exception
        when others then
          :2 := 0;
      end;
		' using in l_group_id, out l_count;   
    
		if l_count> 0 then
      return true;
    else
      return false;
		end if;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    
	end;
	function is_user_in_group(p_user_id in number, p_group_id in number) return boolean
	is
		l_count number := 0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
		l_user_id number := p_user_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
		l_group_id number := p_group_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
	begin
    if wmp_mode.isClient = true then
      return true;
    end if;
    
		execute immediate '
      declare 
        l_count number := 0;
      begin
        if ~portalSchema.wwsec_api.is_user_in_group(:1, :2) then
          l_count := 1;
        end if;
        :3 := l_count;
      end;
		' using in l_user_id, in l_group_id, out l_count;   
    
		if l_count> 0 then
      return true;
    else
      return false;
		end if;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    
	end;
	function user_exists(p_user_id in number) return boolean
	is
		l_count number := 0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
		l_user_id number := p_user_id;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
	begin
    if wmp_mode.isClient = true then
      return true;
    end if;
    
		execute immediate '
      declare 
        l_person ~portalSchema.wwsec_person%rowtype;
      begin
        l_person := ~portalSchema.wwsec_api.person_info(:1);
        :2 := 1;
      exception
        when others then
          :2 := 0;
      end;
		' using in l_user_id, out l_count;   
    
		if l_count> 0 then
      return true;
    else
      return false;
		end if;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    
	end;
    
  function get_string (
      p_domain in varchar2,
      p_sub_domain varchar2 default 'all',
      p_name in varchar2,
      p_language in varchar2
  )
  return varchar2
	is
    l_string varchar2(4000) := null;
    l_domain varchar2(128) := p_domain;
    l_sub_domain varchar2(128) := p_sub_domain;
    l_name varchar2(128) := p_name;
    l_language varchar2(128) := p_language;
	begin
    if wmp_mode.isClient = true then
      select  TEXT_STRING
      into    l_string
      from    wwnls_strings$
      where   lower(domain) = lower(p_domain)
      and     lower(SUB_DOMAIN) = lower(p_sub_domain)
      and     (lower(NAME) = lower(p_name)
              or lower(NAME) = lower(get_user||'.'||p_name))
      and     lower(LANGUAGE) = lower(p_language)
              ;
    else
  		execute immediate '
        declare
          l_string varchar2(4000);
        begin
          l_string := ~portalSchema.wwnls_api.get_string (
            p_domain=> :1,
            p_sub_domain=> :2,
            p_name=> :3,
            p_language=> :4
            );
          :5 := l_string;
        exception
          when others then
            :5 := null;
        end;
  		' using in l_domain, in l_sub_domain, in l_name, in l_language, out l_string;   
    end if;    
    return l_string;
	end;
/*
		if p_language = ENGLISH then
			l_id := wwnls_api.remove_string(p_domain, l_sub_domain, l_name, p_language); 
			l_id := wwnls_api.add_string(p_domain, l_sub_domain, l_name, p_language, p_value); 
		else
			wwnls_api.set_string(p_domain, l_sub_domain, l_name, p_language, p_value); 
		end if;
*/
  function add_string (
      p_domain in varchar2,
      p_sub_domain in varchar2 default 'all',
      p_name in varchar2,
      p_language in varchar2,
      p_text in varchar2
  )
  return number
	is
    l_id number;
    l_string varchar2(4000) := p_text;
    l_domain varchar2(128) := p_domain;
    l_sub_domain varchar2(128) := p_sub_domain;
    l_name varchar2(128) := p_name;
    l_language varchar2(128) := p_language;
	begin
    if wmp_mode.isClient = true then      
      begin      
        insert into wwnls_strings$ (
          DOMAIN,                 
          SUB_DOMAIN,             
          NAME,                   
          LANGUAGE,               
          TEXT_STRING            
        ) values (
          l_domain,
          l_sub_domain,
          l_name, 
          l_language,
          l_string
          );
        commit;
      exception 
        when others then null;
      end;
    else
  		execute immediate '
        declare
          l_id number := null;
        begin
          l_id := ~portalSchema.wwnls_api.add_string (
            p_domain=> :1,
            p_sub_domain=> :2,
            p_name=> :3,
            p_language=> :4,
            p_text=> :5
            );
          :6 := l_id;
        exception
          when others then
            :6 := null;
        end;
  		' using in l_domain, in l_sub_domain, in l_name, in l_language, in l_string, out l_id;   
    end if;   
    return l_id;
	end;
  procedure set_string (
      p_domain in varchar2,
      p_sub_domain in varchar2 default 'all',
      p_name in varchar2,
      p_language in varchar2,
      p_text in varchar2
  )
	is
    l_string varchar2(4000) := p_text;
    l_domain varchar2(128) := p_domain;
    l_sub_domain varchar2(128) := p_sub_domain;
    l_name varchar2(128) := p_name;
    l_language varchar2(128) := p_language;
	begin
    if wmp_mode.isClient = true then
      update    wwnls_strings$
      set     text_string = l_string
      where   lower(domain) = lower(p_domain)
      and     lower(SUB_DOMAIN) = lower(p_sub_domain)
      and     lower(NAME) = lower(p_name)
      and     lower(LANGUAGE) = lower(p_language)
              ;
      commit;
    else
  		execute immediate '
        begin
          ~portalSchema.wwnls_api.set_string (
            p_domain=> :1,
            p_sub_domain=> :2,
            p_name=> :3,
            p_language=> :4,
            p_text=> :5
            );
        exception
          when others then
            null;
        end;
  		' using in l_domain, in l_sub_domain, in l_name, in l_language, in l_string;   
    end if;    
	end;
  procedure remove_string (
      p_domain in varchar2,
      p_sub_domain in varchar2 default 'all',
      p_name in varchar2,
      p_language in varchar2
  )
	is
    l_domain varchar2(128) := p_domain;
    l_sub_domain varchar2(128) := p_sub_domain;
    l_name varchar2(128) := p_name;
    l_language varchar2(128) := p_language;
	begin
    if wmp_mode.isClient = true then
      delete from    wwnls_strings$
      where   lower(domain) = lower(p_domain)
      and     lower(SUB_DOMAIN) = lower(p_sub_domain)
      and     lower(NAME) = lower(p_name)
      and     lower(LANGUAGE) = lower(p_language)
              ;
      commit;
    else
  		execute immediate '
        declare
          l_row_count number;
        begin
          l_row_count := ~portalSchema.wwnls_api.remove_string (
            p_domain=> :1,
            p_sub_domain=> :2,
            p_name=> :3,
            p_language=> :4
            );
        exception
          when others then
            null;
        end;
  		' using in l_domain, in l_sub_domain, in l_name, in l_language;   
    end if;    
	end;
	function group_id_list(p_user_name in varchar2) return varchar2
	is
		l_user_name varchar2(128) := p_user_name;
		l_result varchar2(4000);
	begin
    if wmp_mode.isClient = true then
      return '''' || CLIENTGROUPID || '''';
    end if;
      
		execute immediate '
      declare 
    		l_groupid_array wwsec_api.idarray;
        l_group_name varchar2(250);
    		l_result varchar2(4000);
      begin
    		l_groupid_array := ~portalSchema.wwsec_api.user_in_groups(p_user_name=>:1);
        l_result := '''''''' || l_groupid_array(1) || '''''''';
    		for g in 2..l_groupid_array.count
        loop
        	l_result := l_result || '','''''' || l_groupid_array(g) || '''''''';
      	end loop;
        :2 := l_result;
      exception 
        when others then 
          null;
      end;
		' using in l_user_name, out l_result;   
		return l_result;
	end;
  function is_logged_on return Boolean
	is
    l_count number := 0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
	begin
    if wmp_mode.isClient = true then
      return true;
    end if;
    
		execute immediate '
      declare 
        l_count number := 0;
      begin
        if ~portalSchema.wwctx_api.is_logged_on = true then
          l_count := 1;
        end if;
        :2 := l_count;
      exception
        when others then 
          null;
      end;
		' using out l_count;   
    
		if l_count> 0 then
      return true;
    else
      return false;
		end if;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    
	end;
  function check_if_logged_on (
    p_requested_url in varchar2 := null
    )
  return boolean
	is
    l_requested_url varchar2(4000) := p_requested_url;
    l_count number := 0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
	begin
    if wmp_mode.isClient = true then
      return true;
    end if;
    
		execute immediate '
      declare 
        l_count number := 0;
      begin
        if ~portalSchema.wwsec_app_priv.check_if_logged_on(:1) = true then
          l_count := 1;
        end if;
        :2 := l_count;
      exception
        when others then 
          null;
      end;
		' using in l_requested_url, out l_count;   
    
		if l_count> 0 then
      return true;
    else
      return false;
		end if;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    
	end;
  procedure render_css
  is
  begin
    htp.p('
.GroupHeaderid1siteid0{
Background-Color : #336699 ;
Height : 20 ;
Text-Align : Left ;
}
.GroupHeaderLinkid1siteid0{
Color : #FFFFFF ;
Font-Family : Arial, Helvetica ;
Font-Size : 9pt ;
Font-Weight : Bold ;
}
.GroupHeaderTextid1siteid0{
Color : #FFFFFF ;
Font-Weight : Bold ;
Font-Size : 9pt ;
Font-Family : Arial, Helvetica ;
}
.RegionHeaderid1siteid0{
Background-Color : #336699 ;
Height : 20 ;
Text-Align : Left ;
}
.RegionHeaderTextid1siteid0{
Color : #FFFFFF ;
Font-Family : Arial, Helvetica ;
Font-Size : 9pt ;
Font-Weight : Bold ;
}
.Bodyid1siteid0{
Background-Color : #FFFFFF ;
}
.applicationtypeid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.authorid1siteid0{
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
Color : #000000 ;
}
.createdateid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.creatorid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.defaultattributeid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.descriptionid1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.documentsizeid1siteid0{
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
Color : #000000 ;
}
.expiredateid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.help_urlid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.initialpagenameid1siteid0{
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
Color : #000000 ;
}
.inplacedisplayid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.itemfunctionid1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.keywordsid1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.perspectivesid1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.portletidid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.provideridid1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.providernameid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.titleid1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
Font-Weight : Bold ;
}
.titleorimageid1siteid0{
Color : #336699 ;
Font-Family : Arial, Helvetica ;
Font-Size : 9pt ;
Font-Weight : Bold ;
Text-Decoration : Underline ;
}
.wwsbr_category_id1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.wwsbr_expirationperiod_id1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.wwsbr_itemtype_id1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.wwsbr_page_id1siteid0{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.wwsbr_pagegroup_id1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.wwsbr_portletname_id1siteid0{
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
Color : #000000 ;
}
.wwsbr_updatedate_id1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.wwsbr_updator_id1siteid0{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.LeftCurve{
Background-Attachment : scroll ;
Background-Position : left top ;
Background-Repeat : no-repeat ;
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFl.gif', get_user) ||') ;
}
.PortletBodyColor{
Background-Color : #FFFFFF ;
}
.PortletHeaderColor{
Background-Color : #336699 ;
}
.PortletHeaderLink{
Color : #FFFFFF ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.PortletHeaderStyle{
}
.PortletHeaderText{
Color : #FFFFFF ;
Font-Family : Arial, Helvetica ;
Font-Weight : Bold ;
Font-Size : 10pt ;
}
.PortletHeading1{
Color : #336699 ;
Font-Weight : Bold ;
Font-Family : Arial, Helvetica ;
Font-Size : 9pt ;
}
.PortletHeading2{
Font-Size : 8pt ;
Font-Weight : Bold ;
Font-Family : Arial, Helvetica ;
Color : #336699 ;
}
.PortletHeading3{
Color : #336699 ;
Font-Family : Arial, Helvetica ;
Font-Weight : Bold ;
Font-Size : 7pt ;
}
.PortletHeading4{
Color : #336699 ;
Font-Size : 7pt ;
Font-Weight : Bold ;
Font-Family : Arial, Helvetica ;
}
.PortletSubHeaderColor{
Background-Color : #EEEEDD ;
}
.PortletSubHeaderLink{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 9pt ;
}
.PortletSubHeaderText{
Color : #000000 ;
Font-Size : 9pt ;
Font-Family : Arial, Helvetica ;
}
.PortletText1{
Color : #000000 ;
Font-Size : 8pt ;
Font-Family : Arial, Helvetica ;
}
.PortletText2{
Color : #000000 ;
Font-Family : Arial, Helvetica ;
Font-Size : 8pt ;
}
.PortletText3{
Color : #000000 ;
Font-Size : 7pt ;
Font-Family : Arial, Helvetica ;
}
.PortletText4{
Font-Size : 7pt ;
Color : #000000 ;
Font-Family : Arial, Helvetica ;
}
.RightCurve{
Background-Attachment : scroll ;
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFr.gif', get_user) ||') ;
Background-Position : right top ;
Background-Repeat : no-repeat ;
}
.LeftSubTabid1siteid0{
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFsl.gif', get_user) ||') ;
Background-Repeat : no-repeat ;
Background-Attachment : scroll ;
Background-Color : #336699 ;
Background-Position : left top ;
}
.LeftTabBgSlantid1siteid0{
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFtl.gif', get_user) ||') ;
Background-Attachment : scroll ;
Background-Color : #CCCC99 ;
Background-Position : left top ;
Background-Repeat : no-repeat ;
}
.LeftTabForeSlantid1siteid0{
Background-Position : left top ;
Background-Repeat : no-repeat ;
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFtl.gif', get_user) ||') ;
Background-Attachment : scroll ;
Background-Color : #336699 ;
}
.RightSubTabid1siteid0{
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFsr.gif', get_user) ||') ;
Background-Position : right top ;
Background-Repeat : no-repeat ;
Background-Attachment : scroll ;
Background-Color : #336699 ;
}
.RightTabBgCurveid1siteid0{
Background-Color : #CCCC99 ;
Background-Position : right top ;
Background-Attachment : scroll ;
Background-Repeat : no-repeat ;
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFtr.gif', get_user) ||') ;
}
.RightTabForeCurveid1siteid0{
Background-Image : url(' || get_proc_path('wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=FFFFFFtr.gif', get_user) ||') ;
Background-Attachment : scroll ;
Background-Color : #336699 ;
Background-Position : right top ;
Background-Repeat : no-repeat ;
}
.SubTabBgTextid1siteid0{
Font-Size : 11pt ;
Font-Weight : Bold ;
Color : #CCCC99 ;
Font-Family : Arial, Helvetica ;
Text-Decoration : none ;
}
.TabBackgroundColorid1siteid0{
Background-Color : #CCCC99 ;
}
.TabBackgroundTextid1siteid0{
Color : #003366 ;
Font-Size : 10pt ;
Font-Family : Arial, Helvetica ;
Text-Decoration : none ;
}
.TabForegroundColorid1siteid0{
Background-Color : #336699 ;
}
.TabForegroundTextid1siteid0{
Font-Family : Arial, Helvetica ;
Font-Size : 10pt ;
Font-Weight : Bold ;
Text-Decoration : none ;
Color : #FFFFFF ;
}
.RegionNoBorder{}
.RegionBorder { border:#336699  1px solid; }
.RegionHeaderColor { background-color:#FFFFFF; border:#336699 0px solid }
.PageColor { background-color:#FFFFFF}    
    ');
  end;
  function get_background_image return varchar2
  is
  begin
    if wmp_mode.isClient = true then
      return get_user || '.wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=opbgimg.gif';
    else
      return '/images/opbgimg.gif';
    end if;
  end;
  function get_pobtrans_image return varchar2
  is
  begin
    if wmp_mode.isClient = true then
      return get_user || '.wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=pobtrans.gif';
    else
      return '/images/pobtrans.gif';
    end if;
  end;
  function get_home_image return varchar2
  is
  begin
    if wmp_mode.isClient = true then
      return get_user || '.wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=home.gif';
    else
      return '/images/home.gif';
    end if;
  end;
  function get_help_image return varchar2
  is
  begin
    if wmp_mode.isClient = true then
      return get_user || '.wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=helpl.gif';
    else
      return '/images/helpl.gif';
    end if;
  end;
  function get_home_url return varchar2
  is
  begin
    if wmp_mode.isClient = true then
      return get_user || '.wmp_api_call.home' ;
    else
      return wmp_constants.PORTAL_SCHEMA || '.home';
    end if;
  end;
  function get_logout_url return varchar2  
  is   
    l_url varchar2(4000) := null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    if wmp_mode.isClient = true then
      l_url := 'logmeoff';
    else                 
      begin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
        execute immediate 'select ~portalSchema.wwsec_app_priv.get_logout_url from dual' into l_url; 
    	exception 
       	when others then
           l_url := null;
    	end;
  	end if;    
    return l_url;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  end;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
      
  procedure logout 
  is
  begin
    owa_sec.set_protection_realm(get_home_url);  
  end;
  function get_image (p_image in varchar2) return varchar2
  is
  begin
    if wmp_mode.isClient = true then
      return get_user || '.wmp_api_doc.show_binary_doc' || chr(63) || 'p_doc_name=' || p_image;
    else
      return '/images/' || p_image;
    end if;
  end;
  function get_browser_schema return varchar2
  is
    l_name varchar2(128) := null;
  begin
    if wmp_mode.isClient = true then
      l_name := get_user;
    else     
      l_name := wmp_constants.USER_SCHEMA;
    end if;
    return l_name;
  end;
end wmp_portal;