///function used to extract a param value from a string given its name, the string shuold be in the format 'name|value,name|value,name|value'
function getCtaParam(string, paramName) {
	var params = string.split(',');
	for(var i=0;i<params.length;i++) {
		var item = params[i].split('|');
		if(item[0] == paramName)
			return item[1].replace(/&/,'%26').replace(/=/,'%3d');
	}
	return '';
}

//function used to run a CTA link
function runCta(path, action, params) {
	var url = CONST_CTA_REPLACE;
	url = url.replace(/{ACTN}/,action);
	url = url.replace(/{PATH}/,path);
	url = url.replace(/{STATE}/,getCtaParam(params,'st'));
	url = url.replace(/{VHL}/,getCtaParam(params,'vhl'));
	window.location.href = url;
}

// Bind up the CTA buttons
function BindCta(container) {
	container.find('a.cta-click').click(function(event) {
		event.preventDefault();
		var anchor = $(this);
		var path = window.location.href.substring(0,window.location.href.indexOf('.aspx'));
		var params = anchor.attr('name');
	
		//check what class is present and run the correct action
		if(anchor.hasClass(CONST_FAVOURITES_ADD)) {
			runCta(path, CONST_FAVOURITES_ADD, params);
		}
		
		//check what class is present and run the correct action
		if(anchor.hasClass(CONST_FAVOURITES_REMOVE)) {
			runCta(path, CONST_FAVOURITES_REMOVE, params);
		}
		
		//check what class is present and run the correct action
		if(anchor.hasClass(CONST_COMPARE_REMOVE)) {
			runCta(path, CONST_COMPARE_REMOVE, params);
		}
		
		//check what class is present and run the correct action
		if(anchor.hasClass(CONST_COMPARE_ADD)) {
			runCta(path, CONST_COMPARE_ADD, params);
		}
	});
}

/// <summary>
/// Change the active tab state of the selected tab menu item. The tabToActivate is a jquery object reference for the tab link clicked. The idContext allows us to set which tab menu needs changing.
/// </summary>
function switchTabState(tabToActivate, idContext)
{
    var activeStateClass    = $("div#" + idContext + "_Menu").attr("class"); 
    var activeState         = activeStateClass.substring((activeStateClass.length - 1), activeStateClass.length);
    var newState            = tabToActivate.attr("href").substring(1,2);
    $("div#" + idContext + "_Menu").removeClass("state" + activeState).addClass("state" + newState);
    $("div#" + idContext + "_Container").removeClass("displayState" + activeState).addClass("displayState" + newState);
    return false;
}

/// <summary>
/// Return a substring after the last instance of the passed in character.
/// </summary>
function stringAfterLast(data, character)
{
	return (data.lastIndexOf(character) > 0) ? data.substring(data.lastIndexOf(character) + 1, data.length) : data;
}

/// <summary>
/// Utility function that opens any new window commands.
/// </summary>
$(document).ready(function() {
    $("a[@rel = 'external']").click(
		function () {
			var link = $(this);
			var qs = getQueryString(link.attr("href"));
			if (!qs.w) qs.w = 800;
			if (!qs.h) qs.h = 600;
			window.open(link.attr("href"), link.attr("id"), "width=" + qs.w + ",height=" + qs.h + ",menubar=yes,location=yes,resizable=yes,status=yes,toolbar=yes,scrollbars=yes");
			return false;
		}
    );
}); 

/// <summary>
/// Utility function that removes the href from any disabled links.
/// </summary>
$(document).ready(function() {
    $("a.disabled").each(
		function () {
			$(this).removeAttr("href");
		}
    );
});

/// <summary>
/// Utility function that parses the query string to a structured object.
/// </summary>
function getQueryString(url)
{ 
	var args = new Object(); 
	var query = url.substring(url.indexOf("?") + 1);
	var pairs = query.split("&"); 
	for(var i = 0; i < pairs.length; i++)
	{ 
		var pos = pairs[i].indexOf("="); 
		if (pos == -1) continue; 
		var argname = pairs[i].substring(0,pos); 
		var value = pairs[i].substring(pos+1); 
		args[argname] = unescape(value); 
	} 
	return args; 
}

