// === JSON ===
// (c) Corelogic, 2007

var json_global = new Object;
json_global.version = '1.0.4';
json_global.releaseDate = '2007.07.05';

// преобразование объекта в JSON-строку
function json_toString(obj)
{
    if (!obj) {return false};
	var json_s = '';
	var obj_type = typeof(obj);
	if (obj_type == 'object')
	{
		if (obj instanceof Array)
		{
			json_s += '[';
	        for (var i=0, imax = obj.length; i<imax; i++)
			{
	            json_s += json_toString(obj[i]);
				if (i<imax-1) {json_s += ','};
	        };
	        json_s += ']';
	    }
		else if (obj instanceof Date)
		{
			json_s += '"' + obj.getFullYear() + '-' +
                json_decDate(obj.getMonth() + 1) + '-' +
                json_decDate(obj.getDate()) + 'T' +
                json_decDate(obj.getHours()) + ':' +
                json_decDate(obj.getMinutes()) + ':' +
                json_decDate(obj.getSeconds()) + '"';
		}
		else
		{
			json_s += '{';
			for (var i in obj)
			{
	            
				if (obj[i]!==Object.prototype[i])
				{json_s += '"'+i+'":' + json_toString(obj[i])+','};
	        };
			if (json_s.substr(json_s.length-1, json_s.length)==',') {json_s = json_s.substr(0, json_s.length-1)};
	        json_s += '}';
		};
	}
	else if (obj_type == 'number')
	{
		json_s += isFinite(obj) ? String(obj) : 'null';
	}
	else if (obj_type == 'string')
	{
		json_s += '"'+obj+'"';
	}
	else if (obj_type == 'boolean' || obj_type == 'function')
	{
		json_s += String(obj);
	};
	return json_s;
}

// преобразование JSON-строки в объект
function json_toObject(str)
{
	var json_o = false;
	try
	{
		eval('json_o = ' + str);
	}
	catch(e) {};
	return json_o;
}

// корректировка чисел в дате
function json_decDate(num)
{
	return num < 10 ? '0' + num : num;
}