// Topshare Datacontroller
// 2008 Topshare International BV
// R.W.M. Arts	

var ns_topshare;

if (!ns_topshare)
	ns_topshare = {};

if(!ns_topshare.ns_controllers)
	throw new Error('Missing dependency. Make sure Controllers.js is included.');

if(!ns_topshare.ns_datacontrollers)
{
	ns_topshare.ns_datacontrollers = {};
	
	// Constructor
	ns_topshare.ns_datacontrollers.TsDataController = function(
					  p_ctrl_id
					, p_pageKey  
					, p_nodeId
					, p_typeId
					, p_subTypeId
					, p_layoutId
					, p_viewContext
					, p_fullRefresh
					, p_targetDiv)
	{

		this.superclass(p_ctrl_id, p_viewContext);
		this.pageKey = p_pageKey
		this.nodeId = p_nodeId;
		this.typeId = p_typeId;
		this.subTypeId = p_subTypeId;
		this.layoutId = p_layoutId;
		this.fullRefresh = p_fullRefresh;
		this.targetDiv = p_targetDiv;

		this.AddHandler(ns_topshare.ns_controllers.RENDER, this.Render);
		this.AddHandler(ns_topshare.ns_controllers.OPEN, this.HandleNavigate);
	}

	ns_topshare.ns_datacontrollers.TsDataController.prototype = 
		new ns_topshare.ns_controllers.Controller();
	ns_topshare.ns_datacontrollers.TsDataController.prototype.superclass = 
		ns_topshare.ns_controllers.Controller;
	ns_topshare.ns_datacontrollers.TsDataController.prototype.constructor = 
		new ns_topshare.ns_datacontrollers.TsDataController;


	ns_topshare.ns_datacontrollers.TsDataController.prototype.GetData = function()
	{
		var html;
		var url;
		
		if (this.viewcontext == 'I')
			url = '/node/asp/render.aspx?';
		else
			url = '/node/asp/renderpublic.aspx?';

		url = url + 'nbrNodeID=' + this.nodeId + '&nbrTypeId=' + this.typeId + '&nbrSubTypeID=' 
			+ this.subtypeId + '&nbrLayoutCategory=' + this.layoutId;
		
		if (this.viewcontext == 'E')
			url = url + '&chrPPKey=' + this.pageKey;


		html = this.LoadHtml(url);
		return html;

	};

	ns_topshare.ns_datacontrollers.TsDataController.prototype.Render = function()
	{
		//alert('FillMe');
	//	var argument = p_msg.argument
	//	var target = argument[0];
		var html = this.GetData();
		var targetdiv = document.getElementById(this.targetDiv);
		
		if (targetdiv != null)
			targetdiv.innerHTML = html;
		else 
			alert('No valid target specified');
	};

	ns_topshare.ns_datacontrollers.TsDataController.prototype.HandleNavigate = function(p_msg)
	{
		var argument = p_msg.argument;
		this.nodeId = argument[0];
		this.typeId = argument[1];
		this.subTypeId = argument[2];
		this.layoutId = argument[3];
		if (this.fullRefresh)
			this.Refresh();
		else
			this.Render();
	};

	ns_topshare.ns_datacontrollers.TsDataController.prototype.Refresh = function()
	{
		// This should not be here...
		var url = this.CreateLinkUrl();
		window.location = url;
	};

	ns_topshare.ns_datacontrollers.TsDataController.prototype.CreateLinkUrl = function()
	{
		var url;

		if (this.viewContext == 'I')
			url = '/folders/' + this.nodeId;
		else 
			url = '/' + this.pageKey + '/' + this.nodeId + '/' + this.typeId + '/' + 
				this.subTypeId + '/' + this.layoutId;
		return url;
	};
}


