﻿function initFeatured() {
	var el = document.getElementById('page');
	if(el.type == 'select-one') {
		attachEventListener(el, 'change', handlePageChange);
	}
}

function handlePageChange(e) {

	var srcEl = GetEvent(e);
	
	var pageNum = srcEl.options[srcEl.selectedIndex].value;
	if (!pageNum) {
		return;
	}
	
	var paginationHelper = new FeaturedPaginationHelper();
	var redirectUrl = paginationHelper.GetRedirectUrl(pageNum);
	if(redirectUrl) {
		window.location = redirectUrl;
	}
	
}

function FeaturedPaginationHelper() {
	this.PAGE_ATTR_NAME = 'page';
	this._qsArgs = undefined;
	this._redirectUrl = '';
	this._hasUpdated = false;
	this._pageNum = 1;

	this.GetRedirectUrl = function(pageNum) {
		try
		{
			if (!this._hasUpdated) {
				this._pageNum = pageNum;
				this.UpdatePageArgValue()
				this._redirectUrl = this.GetHostWithQuerystring();
				this._hasUpdated = true;
			}
			}
		catch(e)
		{}
		return this._redirectUrl;
	}
	
	this.GetQuerystringArray = function() {
		if(this._qsArgs == undefined)
		{
			this._qsArgs = GetQSArgs();
		}
		return this._qsArgs;
	}
	
	this.UpdatePageArgValue = function() {
		this.RemovePageArg();
		this.AddPageArg();
	}
	this.RemovePageArg = function() {
		try {
			var qsArgs = this.GetQuerystringArray();
			for (var i = 0; i <= qsArgs.length - 1; i++) {
				var name = qsArgs[i].split('=')[0];
				if (name == this.PAGE_ATTR_NAME) {
					qsArgs.remove(qsArgs[i]);
				}
			}
		}
		catch (e)
		{ }
	}
	this.AddPageArg = function(qsArgs, obj) {
		try {
			var arg = this.PAGE_ATTR_NAME + '=' + this._pageNum;
			var qsArgs = this.GetQuerystringArray();
			qsArgs.append(arg, true);
		}
		catch (e)
		{ }
	}
	this.GetHost = function() {
		var host = document.location.protocol + "//" + document.location.host;
		return host;
	}
	this.GetHostWithScript = function() {
		var hostWithScript = this.GetHost() + document.location.pathname;
		return hostWithScript;
	}
	this.GetHostWithQuerystring = function() {
		var script = this.GetHostWithScript();
		var querystring = this.GetQuerystringFromArgArray();
		var hostWithQuerystring = script + '?' + querystring;
		return hostWithQuerystring;
	}
	this.GetQuerystringFromArgArray = function() {
		var querystring = '';
		var qsArgs = this.GetQuerystringArray();
		for (var i = 0; i <= qsArgs.length - 1; i++) {
			querystring += qsArgs[i];
			if (i < (qsArgs.length - 1)) {
				querystring += '&';
			}
		}
		return querystring;
	}
}