//////////////////////////////////////////////////////////////////////
// Site-wide global javascript variables and functions
//////////////////////////////////////////////////////////////////////

var linkPrefix = null;
var originatingPathWithinApplication = null;
var originalLocation = null;
var windowLocationLabel = "window-location-cookie";

function initSparkwordsProperty(name, value) {
	if (name == 'linkPrefix') {
		linkPrefix = value;
	}
	else if (name == 'originatingPathWithinApplication') {
		originatingPathWithinApplication = value;
	}

	if (originalLocation == null) {
		var windowLocationCookie = readSparkwordsCookie(windowLocationLabel);
		var localOriginalLocation = new String(window.location);
		if (windowLocationCookie != null && localOriginalLocation.lastIndexOf('#') < 0) {
			originalLocation = windowLocationCookie;
		}
		else {
			originalLocation = localOriginalLocation;
			createSparkwordsCookie(windowLocationLabel, originalLocation, 0);
		}
	}
}

function initSparkwordsJS() {
	var localTabLocation = getSparkwordsTabLocation();
	var localTabBookmark = getSparkwordsTabBookmark();
	var currentLocation = new String(window.location);
	var currentLocationBookmarkIndex = currentLocation.lastIndexOf('#');

	if (currentLocationBookmarkIndex > -1) {
		currentLocation = currentLocation.substring(0, currentLocationBookmarkIndex);
	}

	if (localTabBookmark != null && localTabLocation == currentLocation) {
		if (localTabBookmark != null && localTabBookmark.length < 1) {
			localTabBookmark = null;
		}
		initSparkwordsJSCallback(originatingPathWithinApplication, localTabBookmark);
	}
}

function createSparkwordsCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else {
		var expires = "";
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readSparkwordsCookie(name) {
	var value = null;
	var cookieIndex = document.cookie.indexOf(name + '=');
	if (cookieIndex > -1) {
		cookieIndex += name.length + 1;
		var endIndex = document.cookie.indexOf(';', cookieIndex);
		value = endIndex > -1 ?
			document.cookie.substring(cookieIndex, endIndex) : document.cookie.substring(cookieIndex);
	}
	return value;
}

function eraseSparkwordsCookie(name) {
	createSparkwordsCookie(name, "", -1);
}

function getSparkwordsTabBookmark() {
	var urlBookmark = null;
	if (originalLocation != null && originalLocation.length > 0) {
		var bookmarkIndex = originalLocation.lastIndexOf('#');
		if (bookmarkIndex > -1) {
			urlBookmark = originalLocation.substring(bookmarkIndex + 1);
			if (urlBookmark.length < 1) {
				urlBookmark = null;
			}
		}
	}
	return urlBookmark;
}

function getSparkwordsTabLocation() {
	var urlLocation = null;
	if (originalLocation != null && originalLocation.length > 0) {
		bookmarkIndex = originalLocation.lastIndexOf('#');
		urlLocation = bookmarkIndex > -1 ?
				originalLocation.substring(0, bookmarkIndex) : originalLocation;
	}
	return urlLocation;
}

function adjustSparkwordsBookmarkUrl(tabBookmark) {
	var bookmarkUrl = "";
	var oldTabBookmark = null;
	var windowLocationString = new String(window.location);
	var newWindowLocationString = windowLocationString;
	var bookmarkIndex = windowLocationString.lastIndexOf('#');

	if (bookmarkIndex > -1) {
		oldTabBookmark = windowLocationString.substring(bookmarkIndex + 1);
		newWindowLocationString = windowLocationString.substring(0, bookmarkIndex);
	}
	else {
		var localOldTabBookmark = getSparkwordsTabBookmark();
		if (localOldTabBookmark != null) {
			oldTabBookmark = localOldTabBookmark;
		}
	}

	if (tabBookmark != null && tabBookmark.length < 1) {
		tabBookmark = null;
		oldTabBookmark = null;
	}

	if (tabBookmark != null || oldTabBookmark != null) {
		if (tabBookmark != null) {
			bookmarkUrl += tabBookmark;
		}
		else if (oldTabBookmark != null) {
			bookmarkUrl += oldTabBookmark;
		}

		newWindowLocationString = newWindowLocationString + '#' + bookmarkUrl;
	}
	createSparkwordsCookie(windowLocationLabel, newWindowLocationString, 0);
	var pageYOffset = window.pageYOffset;
	window.location = newWindowLocationString;
}


String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
