var $j = jQuery.noConflict();

/*
 * Requires jQuery to be bound to $j.
 * Requires Prototype
 */


function getPageParameters() {
	// get the current URL
	var url = window.location.toString();
	//get the parameters
	url.match(/\?(.+)$/);
	var pageParameters = RegExp.$1;
	return pageParameters;
}

function getPageParameter(parameterName) {
	var params = getPageParameters();
	var params = params.split("&");
	var parameterValue = "";
	for(var i=0;i<params.length;i++)
	{
		var parameterKeyValuePair = params[i].split("=");
		if (parameterKeyValuePair[0] == parameterName) {
			parameterValue = unescape(parameterKeyValuePair[1]);
		}
	}
	return parameterValue;
}


function hasClass(element, classname)
{
	return !($j(element).attr("class").indexOf(classname) < 0);
}

function makeNonLightviewAssetOpenInNewWindow(asset) {
	if (!hasClass(asset, "lightview")) 
	{
		$j(asset).click(function() {
			window.open($j(this).attr('href'), 'asset_window');
			return false;
		});
	}
}

function prepareGatedAssetLink(assetLinkElement, index)
{
	var queryString = (location.search.length > 0) ? location.search : "?";
	var doc = escape("http://" + location.host + location.pathname + queryString + "&ku=true&a=" + index);
	var href = $j(assetLinkElement).attr('href');
	href = href.replace(/^([^\?]+)\?(.*)doc=([^&]+)(.*)$/, "$1?$2doc=" + doc + "$4&" + "doctype=" + href.slice(href.search(/\.[^.]*$/)));
	$j(assetLinkElement).attr('href', href);
	$j(assetLinkElement).removeClass("lightview");
	$j(assetLinkElement).removeAttr("target");
	$j(assetLinkElement).attr("title", "");
	$(assetLinkElement).stopObserving();
}

function ungateAssetLink(asset) {
	var href = $j(asset).attr('href');
	href = href.replace(/^([^\?]+)\?(.*)doc=([^&]+)(.*)$/, "$3");
	href = unescape(href);
	$j(asset).attr('href', href);
	makeNonLightviewAssetOpenInNewWindow(asset);
}

function getAssets()
{
	if ($j().jquery == "1.1.2")
	{
		return $j("a[@href*='?doc=']");
	}

	return $j("a[href*='?doc=']");
}


function isKnownUser()
{
	if ($j.cookie && $j.cookie('ku') != null)
	{
		return true;
	}
	else
	{
		return (getPageParameter("ku") == "true");
	}
}


function processGatedAssets() {
	var assets = getAssets();
	$j(assets).addClass("gated");
	if (!isKnownUser()) 
	{
		for(var i=0;i<assets.length;i++) {
			prepareGatedAssetLink(assets[i], i);
		}
	} 
	else 
	{
		for(var i=0;i<assets.length;i++) {
			ungateAssetLink(assets[i]);
		}
	}
}

processGatedAssets();

document.observe('lightview:loaded', function() {
	var aid = getPageParameter("a");
	var assets = $j(".gated");
	if (isKnownUser() && aid != "") {
		assets[aid].simulate('click');
	}
});

