<?php
/**
 * ****************************************************************
 * Project:      chrischans-hof
 * ****************************************************************
 * Workfile:     XajaxHelper.php
 * ****************************************************************
 * Description:                 
 * ***************************************************************/
class XajaxHelper extends xajax implements SingletonInterface {
	private static $instance;
	private static $nav;

	private function __construct ($_requestUri) {
	   parent::xajax($_requestUri);
	}

	/***************************************************************
	 * create instance of xajax class
	 ***************************************************************/
	public static function getInstance($_nav = null){
		$configLoader = ConfigLoader::getInstance();

		if (!isset(self::$instance) || $_nav !== self::$nav){
			self::$instance = new XajaxHelper("xajax_server.php5?nav=".$_nav."&language=".$_GET['language']."&session_id=".session_id());
			self::$nav = $_nav;
		}    
		if(!empty($_nav)){
			$_class = ucfirst($_nav).'Server';
			self::setInstanceObject($_class);
		}

		return self::$instance;
	}

	/***************************************************************
	 * registers all public functions of a server-object
	 ***************************************************************/
	public static function setInstanceObject($_class){
		$object = new $_class();
		$methods = get_class_methods($object);

		foreach($methods as $method){
			if(strpos($method, '__') !== 0){
				self::$instance->register(XAJAX_FUNCTION,array($method, $object, $method));
			}
		}
	}
}
?>