// tsUrlGeneratorController.js
// R. Arts, Topshare International BV
// Implements behaviour for tag @urlgenerator@ 
// Will redirect to or return a url depending on received message.
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_urlgeneratorcontrollers)
{
	ns_topshare.ns_urlgeneratorcontrollers ={};

	// Constructor

	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator = function (p_ctrlid, p_viewcontext, p_ppkey, p_domain)
	{
		this.AddHandler(ns_topshare.ns_controllers.GENERATE, this.Generate);
		this.AddHandler(ns_topshare.ns_controllers.NAVIGATE, this.Navigate);

		this.superclass(p_ctrlid, p_viewcontext);
		this.ppkey = p_ppkey;
		this.domain = p_domain;

		// Handlers
	}

	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator.prototype = new ns_topshare.ns_controllers.Controller();
	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator.prototype.superclass = ns_topshare.ns_controllers.Controller;
	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator.prototype.constructor = ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator;
	
	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator.prototype.Generate = function (p_msg)
	{
		var params = p_msg.argument;
		var nrArguments = params[0];
		var id = params[1];
		var viewcontext = params[2];
		var friendly_url = params[3];
		var args = new Array(nrArguments);
		
		for (var i = 0; i < nrArguments; i++)
			args[i] = params[i + 4];


		var url = this.ConstructUrl(viewcontext, friendly_url, args);

		document.getElementById(id).href = url;
	};

	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator.prototype.Navigate = function (p_msg)
	{
		var params = p_msg.argument;
		var nrArguments = params[0];
		var viewcontext = params[1];
		var friendly_url = params[2];
		var args = new Array(nrArguments);
		
		for (var i = 0; i < nrArguments; i++)
			args[i] = params[ i + 3];


		var url = this.ConstructUrl(viewcontext, friendly_url, args);

		
		window.location.href = url;  
	};
	
	ns_topshare.ns_urlgeneratorcontrollers.UrlGenerator.prototype.ConstructUrl = function (p_viewcontext, 
			p_friendly_url, p_args)
	{
		var url = 'http://' + this.domain + '/';
		
		if (p_friendly_url == true)
		{
			switch (p_viewcontext.toLowerCase())
			{
				case 'i':	url = url + 'folders/';
							break;
				case 'e':	url = url + this.ppkey + '/';
							break;
				default:	break;
			}
		}

		for (var i = 0; i < p_args.length; i++)
			url = url + p_args[i] + '/';
		// TODO: Sanitize the url
		// For now: (test purposes)
		return url;

	};
}
