• Файл: storage.js
  • Полный путь: https://files.multura.space/qiwi/interface_fake-osmp_v1.0.0/system/js/engine/storage.js
  • Дата изменения: 12/19/2011 8:40 AM
  • Размер файла: 8.17 KB
  • MIME-тип: text/plain
  • Кодировка: utf-8
 
Открыть Назад
var ST_COOKIE = 0;
var ST_SESSION = 1;
var ST_FF_STORAGE = 2;


function createStorage(nStrorageType) {
    switch (nStrorageType) {
        case ST_COOKIE:
            return new CCookie();
        case ST_SESSION:
            return new CSession();
        default:
            return null;
    }
}

IStorage = createClass
(
	null,
	{
	    put: function(sName, sValue, bIsGlobal) {
	        //NOTIMPLEMENTED
	    },

	    remove: function(sName, bIsGlobal) {
	        //NOTIMPLEMENTED
	    },

	    get: function(sName) {
	        return null;
	    },

	    clear: function(bIsGlobal) {
	        //NOTIMPLEMENTED
	    },

	    clearOnly: function(sNames, bIsGlobal) {
	        //NOTIMPLEMENTED
	    },

	    clearExcept: function(sNames, bIsGlobal) {
	        //NOTIMPLEMENTED
	    },

	    show: function() {
	        //NOTIMPLEMENTED
	    }
	}
);

CCookie = createClass
(
	IStorage,
	{
	    put: function(sName, sValue, bIsGlobal) {
	        if (!$isNoU(sName) && sName.is(String)) {
	            if ($isNoU(sValue) || !sValue.is(String)) {
	                value = "null";
	            }
	            document.cookie = escape(sName) + "=" + escape(sValue) +
	                (($bool(bIsGlobal)) ? "; path=/" : "");
	        }
	    },

	    remove: function(sName, bIsGlobal) {
	        if (!$isNoU(sName) && sName.is(String)) {
	            document.cookie = escape(sName) + "=; expires=" + (new Date(0)).toGMTString() +
	            (($bool(bIsGlobal)) ? "; path=/" : "");
	        }
	    },

	    get: function(sName) {
	        var sResult = null;
	        var aCookies = [];
	        if (!$isNoU(sName) && sName.is(String)) {
	            aCookies = document.cookie.split("; ");
	            for (var i = 0; i < aCookies.length; i++) {
	                if (aCookies[i].indexOf(escape(sName) + "=") > -1) {
	                    sResult = unescape(aCookies[i].substr(aCookies[i].indexOf("=") + 1));
	                    if ($isNoU(sResult) || sResult === "null" || !sResult.length) {
	                        sResult = null;
	                    }
	                    break;
	                }
	            }
	        }
	        return sResult;
	    },

	    clear: function(bIsGlobal) {
	        var aCookies = document.cookie.split("; ");
	        for (var i = 0; i < aCookies.length; i++) {
	            this.remove(aCookies[i].substring(0, aCookies[i].indexOf("=")), bIsGlobal);
	        }
	    },

	    clearOnly: function(sNames, bIsGlobal) {
	        var aCookies = [];
	        var aNames = [];
	        var sName = "";
	        if (!$isNoU(sNames) && sNames.is(String)) {
	            aCookies = document.cookie.split("; ");
	            aNames = sNames.split("; ");
	            for (var i = 0; i < aCookies.length; i++) {
	                sName = aCookies[i].substring(0, aCookies[i].indexOf("="));
	                for (var j = 0; j < aNames.length; j++) {
	                    if (sName.indexOf(aNames[j]) > -1) {
	                        this.remove(sName, bIsGlobal);
	                        break;
	                    }
	                }
	            }
	        }
	    },

	    clearExcept: function(sNames, bIsGlobal) {
	        var aCookies = [];
	        var aNames = [];
	        var sName = "";
	        var bFlag = true;
	        if (!$isNoU(sNames) && sNames.is(String)) {
	            aCookies = document.cookie.split("; ");
	            aNames = sNames.split("; ");
	            for (var i = 0; i < aCookies.length; i++) {
	                bFlag = true;
	                sName = aCookies[i].substring(0, aCookies[i].indexOf("="));
	                for (var j = 0; j < aNames.length; j++) {
	                    if (sName.indexOf(aNames[j]) > -1) {
	                        bFlag = false;
	                        break;
	                    }
	                }
	                if (bFlag) {
	                    this.remove(sName, bIsGlobal);
	                }
	            }
	        }
	    },

	    show: function() {
	        var sResult = "Cookie info:\n\n";
	        var aCookies = document.cookie.split("; ");
	        for (var i = 0; i < aCookies.length; i++) {
	            sResult += aCookies[i].replace("=", ": ") + "\n";
	        }
	        alert(sResult);
	    }
	}
);

	CSession = createClass
(
	IStorage,
	{
	    put: function(sName, sValue, bIsGlobal) {
	        var oStorage = Object.deserialize(window.name);
	        if ($isNoU(oStorage)) {
	            oStorage = {};
	        }
	        if (!$isNoU(sName) && sName.is(String)) {
	            if ($isNoU(sValue) || !sValue.is(String)) {
	                value = "null";
	            }
	            oStorage[sName] = sValue;
	            window.name = oStorage.serialize();
	        }
	    },

	    remove: function(sName, bIsGlobal) {
	        var oStorage = Object.deserialize(window.name);
	        if (!$isNoU(oStorage)) {
	            if (!$isNoU(sName) && sName.is(String)) {
	                delete oStorage[escape(sName)];
	                if ($sizeOf(oStorage)) {
	                    window.name = oStorage.serialize();
	                }
	                else {
	                    window.name = "";
	                }
	            }
	        }
	    },

	    get: function(sName) {
	        var sResult = null;
	        var oStorage = Object.deserialize(window.name);
	        if (!$isNoU(oStorage)) {
	            if (!$isNoU(sName) && sName.is(String)) {
	                sName = escape(sName);
	                if (!$isNoU(oStorage[sName]) && oStorage[sName].is(String)) {
	                    sResult = oStorage[sName];
	                }
	            }
	        }
	        return sResult;
	    },

	    clear: function(bIsGlobal) {
	        window.name = "";
	    },

	    clearOnly: function(sNames, bIsGlobal) {
	        var oStorage = Object.deserialize(window.name);
	        var aNames = [];
	        if (!$isNoU(oStorage)) {
	            if (!$isNoU(sNames) && sNames.is(String) && sNames.length) {
	                aNames = sNames.split("; ");
	                for (var f in oStorage) {
	                    for (var i = 0; i < aNames.length; i++) {
	                        if (unescape(f).indexOf(aNames[i]) > -1) {
	                            delete oStorage[f];
	                            break;
	                        }
	                    }
	                }
	                if ($sizeOf(oStorage)) {
	                    window.name = oStorage.serialize();
	                }
	                else {
	                    window.name = "";
	                }
	            }
	        }
	    },

	    clearExcept: function(sNames, bIsGlobal) {
	        var oStorage = Object.deserialize(window.name);
	        var aNames = [];
	        var bFlag = true;
	        if (!$isNoU(oStorage)) {
	            if (!$isNoU(sNames) && sNames.is(String) && sNames.length) {
	                aNames = sNames.split("; ");
	                for (var f in oStorage) {
	                    if (oStorage.hasOwnProperty(f)) {
	                        bFlag = true;
	                        for (var i = 0; i < aNames.length; i++) {
	                            if (f.indexOf(aNames[i]) > -1) {
	                                bFlag = false;
	                                break;
	                            }
	                        }
	                        if (bFlag) {
	                            delete oStorage[f];
	                        }
	                    }
	                }
	                if ($sizeOf(oStorage)) {
	                    window.name = oStorage.serialize();
	                }
	                else {
	                    window.name = "";
	                }
	            }
	        }
	    },

	    show: function() {
	        var sResult = "Session info:\n\n";
	        var oStorage = Object.deserialize(window.name);
	        if (!$isNoU(oStorage)) {
	            for (var f in oStorage) {
	                if (oStorage.hasOwnProperty(f)) {
	                    sResult += f + ": " + oStorage[f] + "\n\n";
	                }
	            }
	        }
	        alert(sResult);
	    }
	}
);

var storage = createStorage(ST_SESSION);