function persistentStorageID(obj) {
	try {
		var classes = $(obj).attr('class').split(/[ \t\r\n]/);
		var result;
		for (var i = 0; i < classes.length; i++) {
			if (result = classes[i].match(/PSID-(([a-zA-Z0-9_-]+-)?[0-9]+-[0-9]+)/)) return result[1];
		}
		return false;
	} catch (err) {
		return false;
	}
}
function persistentStorageSave(id,value) {
	try {
		$.jStorage.set('PS'+id,value);
	}
	catch (err) {
		return false;
	}
}
function persistentStorageLoad(id) {
	try {
		var value = $.jStorage.get('PS'+id);
		return value ? value : '';
	}
	catch (err) {
		return '';
	}
}
function persistentStorageRemove(id) {
	try {
		$.jStorage.deleteKey('PS'+id);
	}
	catch (err) {
		return false;
	}
}
$(function(){
	try {
		$(window).bind('beforeunload',function() {
			var obj = $('.persistentStorage:focus');
			if (obj.length == 1) {
				var id = persistentStorageID(obj);
				if (!id) return false;
				persistentStorageSave(id,$(obj).val());
			}
		});
	}
	catch (err) {
		return false;
	}
	$('.persistentStorage').blur(function() {
		var id = persistentStorageID(this);
		if (!id) return false;
		persistentStorageSave(id,$(this).val());
	});
	$('.persistentStorage:not(.PSPREDEFINED)').each(function() {
		var id;
		if (id = persistentStorageID(this)) {
			$(this).val(persistentStorageLoad(id));
			$(this).change();
		}
	});
});