// функции преобразования данных 
// для хранения в куках, или передачи в урл
//
//
// serialize, unserialize:
//
// [ [a,b,c], [1,2,3] ]   <-->   "a,b,c;1,2,3;"
//
// ещё можно озаглавить порцию данных, добавив заголовок
//
// [ [a,b,c], [1,2,3] ], "header"   -->   "header:a,b,c;1,2,3;"
//
// "header:a,b,c;1,2,3;   -->   [ header, [[a,b,c], [1,2,3]] ]


function unserialize( str, withHeader )
{
    var entries = [];
    if (str && str.length) {
        entries = str.split(';').without('');
        for (var i=0; i<entries.length; i++) {
            entries[i] = entries[i].split(',');
        }
    }
    if (withHeader) {
        var first = entries[0][0].split(':');
        entries[0][0] = first[1];
        entries = [ first[0], entries ];
    }
    return entries;
}
// ^^^ unserialize



function serialize( content, header )
{
    if (!header) header = '';
    if (content.length) {
        for (var i=0; i<content.length; i++) {
            for (var j=0; j<content[i].length; j++) {
                content[i][j] = escape(content[i][j]);
            }
            content[i] = content[i].join(',');
        }
        return (header ? (header+':') : '') + content.join(';') + ';';
    }
    return '';
}
// ^^^ serialize



// преоразует строку в последовательность ascii кодов, начинающихся на x
function asciiEncode( string )
{
string = string.replace(/\//g, " ");
return encodeURI(string);
/*
    var result = '';
    for (var i=0; i < string.length; i++) {
        result += 'x' + string.charCodeAt(i);
    }
    return result;
*/
}
// ^^^ asciiEncode



// преобразует к человеческому виду строку после asciiEncode
function asciiDecode( string )
{

}
// ^^^ asciiDecode
