﻿/* Global String utilities*/
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+$/, "");
}

String.prototype.htmlEncode = function() {
	return this.replace(/'/gi, "&#39")
}

/*  Global Cookie Utilities*/

function GetCookieValue(name) {
	/*  document.cookie ='mycookiename=testcookie; expires=Thu, 2 Aug 2010 20:47:11 UTC; path=/'  */

	var cookie = document.cookie;

	var values = cookie.split(';');

	for (var i = 0; i < values.length; i++) {
		var pair = values[i].split('=');
		if (pair[0].trim() == name) return pair[1].trim();
	}

	return null;
}

function SetCookieValue(name, value) {

	/*  document.cookie ='mycookiename=testcookie; expires=Thu, 2 Aug 2010 20:47:11 UTC; path=/'  */
	/* 
	no expiration date means the cookie will be deleted when the brower closes, which is what we want for 
	these particular cookie settings
	*/

	document.cookie = name + '=' + value + '; expires=Thu, 2 Aug 2020 20:47:11 UTC;  path=/';

}

/* Other utilities */
function SetPersistUIAttr(id, name, value) {

	var values = GetCookieValue(id);

	if (values !== null && values !== '') {

		var regexReplace = new RegExp('((?:\\||^)' + name + ',)(.+?)(?=\\||$)', 'gi');

		if (regexReplace.test(values)) {
			var replaceResult = values.replace(regexReplace, '$1' + value);

			values = replaceResult;
		}
		else
			values += '|' + name + ',' + value;
	}
	else {
		values = '|' + name + ',' + value;
	}

	return SetCookieValue(id, values);
}

function GetPersistUIAttr(id, name) {

	var retval = null;

	var values = GetCookieValue(id);

	var regex = new RegExp('((?:\\||^)' + name + ',)(.+?)(?=\\||$)', 'gi');

	if (regex.test(values)) {
		regex.lastIndex = 0;

		var valueArray = regex.exec(values);

		retval = valueArray[2];
	}

	return retval;
}
