function _do_get_shipping_options($shipping_configuration)
 {        
   $this->_clean_cookie();
   
   $this->_browse_to_home_page();
   
   $express_html = $this->_get_express_shipping_options_html($shipping_configuration);
     
   $ground_html = $this->_get_ground_shipping_options_html($shipping_configuration);
   
   if($express_html === false)
     $express_options = array();
   else
     $express_options = $this->_parse_html_options($express_html);
         
   if($ground_html === false)
     $ground_options = array();
   else
   {
     $ground_options = $this->_parse_html_options($ground_html);
     
     foreach($ground_options as $key => $value)
     {
       $ground_options[$key]['ground'] = true;
     }
   }
       
   $options = complex_array :: array_merge($express_options, $ground_options);
   
   if(empty($options))
     return false;
   
   return $options;
 }
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'url' => 'url',
  				'new_window' => 'new_window',
	      )
	  );     
	}  
	function perform()
	{
		$object_data = fetch_mapped_by_url();
		
		$parent_data = fetch_one_by_node_id($object_data['parent_node_id']);
		$path = $parent_data['path'];
		
		$params = complex_array :: array_merge($_GET, $_POST);

		$sep = '';
		$query = '';
		
		$flat_params = array();
		complex_array :: to_flat_array($params, $flat_params);
		
		foreach ($flat_params as $key => $value)
		{
			$query .= $sep . $key . '=' . urlencode($value);
			$sep = '&';
		} 
		if (!empty($query))
			$path .= '?' . $query;
		
		return new redirect_response(RESPONSE_STATUS_SUCCESS, $path);
	}
	function _define_class_properties()
	{
		return complex_array :: array_merge(
					parent :: _define_attributes_definition(),
					array('abstract_class' => true)
				);
	}
	function _define_attributes_definition()
	{
		return complex_array :: array_merge(
				parent :: _define_attributes_definition(),
				array(
				'question' => array('search' => true),
				'answer' => array('search' => true)
				));
	}
 function _define_attributes_definition()
 {
   return complex_array :: array_merge(
       parent :: _define_attributes_definition(),
       array(
       'content' => array('search' => true),
       'annotation' => array('search' => true),
       'identifier' => array('search' => false)
       ));
 }
 function _define_datamap()
 {
   return complex_array :: array_merge(
       parent :: _define_datamap(),
       array(
         'annotation' => 'annotation',
         'image_id' => 'image_id',
         'uri' => 'uri',
       )
   );
 }
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'content' => 'content',
	      )
	  );     
	}   
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'document_content' => 'content',
  				'annotation' => 'annotation',
	      )
	  );     
	}  
 function _define_datamap()
 {
   return complex_array :: array_merge(
       parent :: _define_datamap(),
       array(
         'object_content' => 'content',
         'file_id' => 'file_id'
       )
   );
 }
	function _define_attributes_definition()
	{
		return complex_array :: array_merge(
				parent :: _define_attributes_definition(),
				array(
				'title' => '',
				'name' => array('type' => 'numeric'),
				'search' => array('search' => true),
				));		
	}
 function _define_datamap()
 {
   return complex_array :: array_merge(
       parent :: _define_datamap(),
       array(
         'identifier' => 'identifier',
         'password' => 'password',
         'second_password' => 'second_password',
       )
   );
 }
 function _define_attributes_definition()
 {
   return complex_array :: array_merge(
       parent :: _define_attributes_definition(),
       array(
       'content' => array('search' => true, 'search_weight' => 1),
       ));
 }
	function set_phpbb_rank_action($name = 'set_phpbb_rank', $merge_definition=array())
	{		
		$definition = array(
			'site_object' => 'user_object'
		);
		
		parent :: form_action($name, complex_array :: array_merge($definition, $merge_definition));
	}
 function _define_attributes_definition()
 {
   return complex_array :: array_merge(
       parent :: _define_attributes_definition(),
       array(
       'second_password' => '',
       ));
 }
	function _define_attributes_definition()
	{
		return complex_array :: array_merge(
				parent :: _define_attributes_definition(),
				array(
				'identifier' => array('search' => true)
				));
	}
 function _define_class_properties()
 {
   return complex_array :: array_merge(
         parent :: _define_class_properties(),
         array(
           'abstract_class' => true,
           'db_table_name' => 'empty',
         )
   );
 }
 function array_merge($a1, $a2)
 {
   $n = $a1;
   foreach($a2 as $k => $v)
     if(is_array($v) && isset($n[$k]) && is_array($n[$k]))
       $n[$k] = complex_array :: array_merge($n[$k], $v);
     else
       $n[$k] = $v;
   return $n;
 }
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'subscribe_mail_content' => 'content',
  				'author' => 'author',
	      )
	  );     
	}   
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'name' => 'name',
  				'lastname' => 'lastname',
  				'email' => 'email',
	      )
	  );     
	}  
 function _define_datamap()
 {
     $datamap = array();
     $image_variations = $this->_get_variations_ini_list();
     foreach ($image_variations as $variation => $variation_data) {
         $datamap['upload_' . $variation . '_max_size'] = 'upload_' . $variation . '_max_size';
         $datamap['generate_' . $variation . '_max_size'] = 'generate_' . $variation . '_max_size';
         $datamap[$variation . '_action'] = $variation . '_action';
         $datamap[$variation . '_base_variation'] = $variation . '_base_variation';
     }
     return complex_array::array_merge(parent::_define_datamap(), $datamap);
 }
	function perform(&$request, &$response)
	{
		$object_data = fetch_requested_object();
		
		$parent_data = fetch_one_by_node_id($object_data['parent_node_id']);
		$path = $parent_data['path'];
		
		$params = complex_array :: array_merge($_GET, $_POST);

		$sep = '';
		$query = '';
		
		$flat_params = array();
		complex_array :: to_flat_array($params, $flat_params);
		
		foreach ($flat_params as $key => $value)
		{
			$query .= $sep . $key . '=' . urlencode($value);
			$sep = '&';
		} 
		if (!empty($query))
			$path .= '?' . $query;
		
		$response->redirect($path);
	}
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'description' => 'description',
	      )
	  );     
	}
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
				  'image_id' => 'image_id',
	      )
	  );     
	}  
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'mail_template' => 'mail_template',
	      )
	  );     
	}  
	function & _load_all_questions($new_params = array())
	{
		$params = array(
			'depth' => -1
		);
		
		$params = complex_array :: array_merge($params, $new_params);
		
		return fetch_sub_branch('/root/polls', 'poll', $params);
	}
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'message' => 'message',
  				'sender' => 'sender',
  				'sender_email' => 'sender_email',
	      )
	  );     
	}  
 function _define_datamap()
 {
   return complex_array :: array_merge(
       parent :: _define_datamap(),
       array(
         'start_date' => 'start_date',
         'finish_date' => 'finish_date',
         'restriction' => 'restriction',
       )
   );
 }
	function _define_attributes_definition()
	{
		return complex_array :: array_merge(
				parent :: _define_attributes_definition(),
				array(
					'content' => array('search' => true, 'search_weight' => 1),
					'annotation' => array('search' => true, 'search_weight' => 5),
					'author' => array('search' => true, 'search_weight' => 10),
					'source' => array('search' => true, 'search_weight' => 10),
				));
	}
  function _define_datamap()
	{
	  return complex_array :: array_merge(
	      parent :: _define_datamap(),
	      array(
  				'annotation' => 'annotation',
  				'object_content' => 'content',
  				'image_id' => 'image_id'
	      )
	  );     
	}