function Storage() {}
Storage.prototype = 
{	
	ieReady:false,
	namespace:'',
	getIEStorage: function()
	{
		if(!document.getElementById('globalStore')) {
            	var storageObj = document.createElement('div');
            	storageObj.id = 'globalStore';
            	storageObj.addBehavior ("#default#userData");
            	storageObj.style.display = 'none';
            	document.body.appendChild(storageObj);
            	return storageObj;
        }
        else return document.getElementById('globalStore');
	},
	setCookie: function(name, value, span) {
		if (!name) { return; }
		document.cookie = escape(this.namespace + name) + '=' + escape(value) +
		';expires=' + (new Date((new Date()).getTime() + (1000 * span))).toGMTString() + ';path=/';
	},
	set:function(key,value)
	{	
		if (window.globalStorage) {
			var glStorage = globalStorage.namedItem(this.namespace + document.domain); 
			glStorage.setItem(key, value);
		}
	    else if ((typeof GM_setValue != 'undefined') && (typeof GM_getValue != 'undefined')) { GM_setValue(this.namespace + key, value); }
	    else if( navigator.appName=="Microsoft Internet Explorer" && this.ieReady) {
	    	var globalStore = this.getIEStorage();
			globalStore.setAttribute(key,value);
			globalStore.save('userDataCache');	
	    }
	    else { Storage.setCookie(key, value, 31536000); }
	},
	get:function(key,dfault)
	{
		if (window.globalStorage) {
			var glStorage = globalStorage.namedItem(this.namespace + document.domain); 
			var data = glStorage.getItem(key);
			return (data) ? data.value : dfault;
		}
	    else if ((typeof GM_setValue != 'undefined') && (typeof GM_getValue != 'undefined')) {
	    	var data = GM_getValue(this.namespace + key, dfault);
			return (data) ? data : dfault;
	    }
	    else if( navigator.appName=="Microsoft Internet Explorer" && this.ieReady) {
	    	var globalStore = this.getIEStorage();
			globalStore.load('userDataCache');
           	return globalStore.getAttribute(key);
	    }
	    else { 
	    	key = (new RegExp(this.namespace + key + '=([^;]*)')).exec(document.cookie + ';');
	    	if (key != null) { return key[1]; } else { return dfault; } 
	    }
	},
	del:function(key)
	{
		if (window.globalStorage) {
			var glStorage = globalStorage.namedItem(this.namespace + document.domain); 
			glStorage.removeItem(key);
		}
	    else if ((typeof GM_setValue != 'undefined') && (typeof GM_getValue != 'undefined')) {
	    	GM_setValue(this.namespace + key, '');
	    }
	    else if( navigator.appName=="Microsoft Internet Explorer" && this.ieReady) {
	    	var globalStore = this.getIEStorage();
			globalStore.load('userDataCache');
            globalStore.setAttribute(key, '');
            globalStore.save('userDataCache');
	    }
	    else { Storage.setCookie(key, '', -10); }
	}
	
}
Storage = new Storage();
