// ==UserScript==
// @namespace http://riddle.pl/-/greasemonkey/globalstorage.user.js
// @name GlobalStorage Test
// @author Riddle
// @include http://riddle.pl/-/xhtml/js-globalstorage/*
// ==/UserScript==

var namespace = 'globalstorage.test' + '.';
var setValue, getValue, removeValue;

// = Firefox 2 globalStorage from HTML5 =============================
if (window.globalStorage) {

	var glStorage = globalStorage.namedItem(namespace + document.domain);
	
	setValue = function(key, value) {
		glStorage.setItem(key, value);
	};
	
	getValue = function(key, dfault) {
		var data = glStorage.getItem(key);
		return (data) ? data.value : dfault;
	};
	
	remValue = function(key) {
		glStorage.removeItem(key);
	};

// = Greasemonkey-specific functions ================================
} else if ((typeof GM_setValue != 'undefined') && (typeof GM_getValue != 'undefined')) {

	setValue = function(key, value) {
		GM_setValue(namespace + key, value);
	};
	
	getValue = function(key, dfault) {
		var data = GM_getValue(namespace + key, dfault);
		return (data) ? data : dfault;
	};
	
	remValue = function(key) {
		GM_setValue(namespace + key, '');
	}
	
	removeValue = null;
	
// = Cookies (for Opera) ============================================
} else {
	
	setCookie = function(name, value, span) {
		if (!name) { return; }
		document.cookie = escape(namespace + name) + '=' + escape(value) +
		';expires=' + (new Date((new Date()).getTime() + (1000 * span))).toGMTString() + ';path=/';
	};
	
	setValue = function(key, value) {
		setCookie(key, value, 31536000);
	};
	
	getValue = function(key, dfault) {
		// by Rafal Kukawski | http://rafael.jogger.pl/2007/02/26/js-a-cookies/
		key = (new RegExp(namespace + key + '=([^;]*)')).exec(document.cookie + ';')
		if (key[1] != 'undefined') { return key[1]; } else { return dfault; }
	};
	
	remValue = function(key) {
		setCookie(key, '', -10);
	}
	
}

// = Test page ======================================================

setValue('my-name', 'Peter');
alert(getValue('my-name', 'default'));
