var re, basket_top, val1, val2;
$(document).ready(
	function()
	{	

		if ($('#action').size() == 1)
		{		
			countDown($('#count_days').val(), $('#count_hours').val(), $('#count_mins').val(), $('#count_good_id').val());
			ActionChanger();
		}

		re = setInterval(function()
		{
			photoRandom();
		}, 30000);



		$('.m_good').each(
			function()
			{
				var good_id = $(this).attr('rel');
				var content = $('#good_desc_' + good_id).val();
				if (content != '') $(this).popup({ event: 'mouseover', content: content });
			}
		);
	}
);


function sendOrder()
{
	$('#amount').val($('#o_all').html());

}

function showCardForm()
{
	$('#orderForm').attr('action', 'https://pay.pscb.ru/');
	$('#amount').val($('#o_all').html());

}

function hideCardForm()
{
	$('#orderForm').attr('action', '');
}


var re, re_change;
function ActionChanger()
{
	re_change = setInterval(function()
	{
		$.ajax({
			url: '/webAjax/goods/showAction/?tmpl=action_banner.html',
			success: function(data)
			{
				if (data == '')
				{
					clearInterval(re_change);
				}
				else 
				{

					$('#action_box').html(data);
					clearInterval(re);
					countDown($('#count_days').val(), $('#count_hours').val(), $('#count_mins').val(), $('#count_good_id').val());
				}
			}
		});		
	}, 60000);	
}


function countDown(days, hours, min, good_id)
{


	var arr = min.split(':');

	if (new Number(arr[0]) < 10)
	{
		var min1 = 0;
		var min2 = arr[0];		
	}
	else
	{
		var min1 = arr[0][0];
		var min2 = arr[0][1];	
	}
	
	if (Number(days) > 10)
	{
		$('#countdown_day1').text(days[0]);
		$('#countdown_day2').text(days[1]);
	}
	else
	{
		$('#countdown_day1').hide();
		$('#countdown_day2').text(days);	
	}

	if (Number(hours) > 10)
	{
		$('#countdown_hour1').text(hours[0]);
		$('#countdown_hour2').text(hours[1]);
	}	
	else if (Number(hours) < 10 && days == 0)
	{
		$('#countdown_hour1').hide();
		$('#countdown_hour2').text(hours);	
	}

	
	$('#countdown_min1').text(min1);
	$('#countdown_min2').text(min2);
	
	$('#countdown_sec1').text(arr[1][0]);
	$('#countdown_sec2').text(arr[1][1]);		
	
	re = setInterval(function()
	{
		countDownStart(good_id)
	}, 1000);

}

function countDownStart(good_id)
{
	var day1 = $('#countdown_day1').text();
	var day2 = $('#countdown_day2').text();
	
	var hour1 = $('#countdown_hour1').text();
	var hour2 = $('#countdown_hour2').text();	
	
	var sec1 = $('#countdown_sec1').text();
	var sec2 = $('#countdown_sec2').text();	

	var min1 = $('#countdown_min1').text();
	var min2 = $('#countdown_min2').text();

	var day = parseInt(day1 + day2);
	var hour = parseInt(hour1 + hour2);	
	var min = parseInt(min1 + min2);
	var sec = parseInt(sec1 + sec2);	

	
	if (min == 0 && sec == 0 && day == 0 && hour == 0)
	{
		clearInterval(re);
		$.ajax({
			url: '/webAjax/goods/showAction/?set=' + good_id + '&tmpl=action_banner.html',
			success: function(data)
			{
				$('#action_box').html(data);
			}
		});
		return true;
	}
	else
	{
	
		if (hour == 0)
		{				
			hour = 23;
			
			if (day != 0)
			{
				day = day - 1;
			}
		}
		
		if (sec == 0) 
		{
			sec = 59;

			if (min == 0)
			{
				min = 59;
				
				if (hour == 0)
				{				
					hour = 23;
					
					if (day != 0)
					{
						day = day - 1;
					}
				}
				else
				{
					hour = hour - 1;
				}
				
			}
			else
			{
				min = min - 1;
			}
			
			
		}
		else
		{
			sec = sec - 1;
		}

		if (sec < 10) sec = '0' + sec;


		// view
		if (day == 0)
		{
		
			$('#countdown_day1, #countdown_day2').text('0').hide(); 
			$('.c_day_s').hide();
		
			$('.c_sec_s').show();
		
			sec = String(sec);		
			$('#countdown_sec1').text(sec[0]).show();	
			$('#countdown_sec2').text(sec[1]).show(); 	
				
		}
		else
		{
			$('.c_day_s').show();		
		
			if (day < 10)
			{
				$('#countdown_day1').text('0').hide(); 	
				$('#countdown_day2').text(day).show(); 			
			}
			else
			{
				day = String(day);
				$('#countdown_day1').text(day[0]).show(); 	
				$('#countdown_day2').text(day[1]).show(); 
			}
			
			sec = String(sec);	
			$('#countdown_sec1').text(sec[0]).hide(); 	
			$('#countdown_sec2').text(sec[1]).hide(); 	
			$('.c_sec_s').hide();
		}	
		
			
		if (hour == 0 && day == 0)
		{
			$('#countdown_hour1, #countdown_hour2').text('0').hide(); 
			$('.c_hour_s').hide();		
		}
		else
		{
			$('.c_hour_s').show();		
		
			if (hour < 10 && day == 0)
			{
				$('#countdown_hour1').text('0').hide(); 	
				$('#countdown_hour2').text(hour).show();			
			}
			else
			{
				hour = String(hour);							
				$('#countdown_hour1').text(hour[0]).show();	
				$('#countdown_hour2').text(hour[1]).show(); 			
			}
		}
		
		min = String(min);			
		$('#countdown_min1').text(min[0]).show(); 	
		$('#countdown_min2').text(min[1]).show(); 
	

	}
}






function changeSkin(el, skin)
{
	$(document.body).removeClass().addClass(skin);
	$('#change_inner .set_design').removeClass('act');
	$(el).addClass('act');
	$.ajax({ url: '/webAjax/users/changeSkin/?skin=' + skin })	
	closeChangeDesign();
}

function getMore(el)
{
		$.ajax({ 
			url: '/webAjax/goods/getMore/?tmpl=goods.html&type=true', 
			success: function(data)
			{
				$('#' + el).html(data);
			}
		})	
}

var scroll_last = 0;
function scrollBasket()
{		
	var scroll = $(document).scrollTop();
	if (scroll > basket_top) $('#basket').css('top', (scroll-basket_top-30) + 'px');
	else  $('#basket').css('top', '-30px');
	scroll_last = scroll;	
}

function deleteBasket(basket_id)
{
	if (confirm('Удалить из заказа?'))
	{
		$('#basket_' + basket_id).fadeOut();
		$.ajax({ 
			url: '/webAjax/goods/deleteBasket/?tmpl=basket.html&basket_id=' + basket_id, 
			success: function(data)
			{
				$('#basket').html(data);
			}
		})
	}
}

function deleteBasketOrder(basket_id)
{
	if (confirm('Удалить из заказа?'))
	{
		$.ajax({ 
			url: '/webAjax/goods/deleteBasket/?tmpl=basket.html&basket_id=' + basket_id, 
			success: function(data)
			{
				$('#basket').html(data);
				
				$.ajax({ 
						url: '/webAjax/goods/getBasket/?tmpl=order_basket.html', 
						success: function(data)
						{
							$('#order_table').html(data);
			
							var all_num = $('#count_order').val();
							var sum = $('#count_order_sum').val();
							var city_sum = $('#city_sum').val();
							
							if (sum < city_sum) 
							{
								$('#info_order_city').show();
								$('#info_order_num').hide();
								$('#order_btn, #step_btn').attr('disabled', true);							
							}							
							else if (all_num == 0) 
							{	
								$('#info_order_num').show();
								$('#info_order_city').hide();
								$('#order_btn, #step_btn').attr('disabled', true);
							}
							else
							{
								$('#info_order_num, #info_order_city').hide();
								$('#order_btn, #step_btn').attr('disabled', false);
							}
							
						}
					})				
				
			}
		})
		
		
	
		
	}
}


function getCitySum(city_id)
{
		$.ajax({ 
			url: '/webAjax/goods/getCitySum/?city_id=' + city_id, 
			success: function(data)
			{
				$('#city_sum_text').html(data);
				$('#city_sum_view').html(data);
				$('#city_sum').val(data);				

				var all_num = $('#count_order').val();
				var sum = new Number($('#count_order_sum').val());
				var city_sum = new Number($('#city_sum').val());
				
				if (sum < city_sum) 
				{
					$('#info_order_city').show();
					$('#info_order_num').hide();
					$('#order_btn, #step_btn').attr('disabled', true);							
				}							
				else if (all_num == 0) 
				{	
					$('#info_order_num').show();
					$('#info_order_city').hide();
					$('#order_btn, #step_btn').attr('disabled', true);
				}
				else
				{
					$('#info_order_num, #info_order_city').hide();
					$('#order_btn, #step_btn').attr('disabled', false);
				}				
			}
		})	
}

var change = false;
function changeDesign(el)
{
	if (!change)
	{
		$('#overlay').show();
		$('#change_design_box').slideDown('slow', function()
		{
			$('#change_design').css('top', $('#change_design_box').outerHeight() + 'px');
			change = true;
		});
	}
	else
	{
		closeChangeDesign();
	}	
}
function closeChangeDesign()
{
		$('#change_design').css('top', '-4px');
		$('#change_design_box').slideUp('slow', function()
		{			
			change = false;
			$('#overlay').hide();
		});
	
}

function addBigGood(good_id)
{
	$.modalClose();
	$('#good_num_' + good_id).val($('#good_big_num_' + good_id).val());
		setTimeout(function()
		{			
			addToBasket(good_id);
		}, 600);
}


function addConstGood()
{
	addToBasket(false, false, true);

}

function addActionGood()
{
	addToBasket(false, false, false, true);

}


var modal_const = 1;
function selectGoodAction(good_id) 
{
	$.modalClose();	
	$.ajax({
		url: '/webAjax/goods/selectGoodAction/?good_id=' + good_id + '&tmpl=good_action.html',
		success: function(data)
		{
			$('#good_select_' + modal_const).hide();
			$('#good_select_link_' + modal_const).text('Изменить');
			$('#good_select_box_' + modal_const).html(data).show();
			$('#const_desc').html('Набор: ');
			
			var name1 = $('#good_select_box_1 .good_head2').text();
			var name2 = $('#good_select_box_2 .good_head2').text();
			var name3 = $('#good_select_box_3 .good_head2').text();
			
			if (name2 != '')
			{
				if (name1 != '') $('#const_desc2').html(' + ' + name2);
				else $('#const_desc2').html(name2);
			}
			
			if (name3 != '')
			{
				if (name1 != '' || name2 != '') $('#const_desc3').html(' + ' + name3);
				else $('#const_desc3').html(name3);
			}			
			
			$('#const_desc1').html(name1);

			if ($('#good_select_box_1 .good_head2').size() != 0 && $('#good_select_box_2 .good_head2').size() != 0 && $('#good_select_box_3 .good_head2').size() != 0)
			{
				$('#select_box').show();
			}
			else $('#select_box').hide();
			
						
		}
	})	
}

function selectGood(good_id, cons, set_id)
{	
	$.modalClose();	
	$.ajax({
		url: '/webAjax/goods/selectGood/?good_id=' + good_id + '&tmpl=good_const.html',
		success: function(data)
		{
			$('#good_select_' + modal_const).hide();
			$('#good_select_link_' + modal_const).text('Изменить');
			$('#good_select_box_' + modal_const).html(data).show();
			$('#const_desc').html('Собери свой обед: ');
			
			var name1 = $('#good_select_box_1 .good_head2').text();
			var name2 = $('#good_select_box_2 .good_head2').text();
			
			if (name2 != '')
			{
				if (name1 != '') $('#const_desc2').html(' + ' + name2);
				else $('#const_desc2').html(name2);
			}
			
			$('#const_desc1').html(name1);

			if ($('#good_select_box_1 .good_head2').size() != 0 && $('#good_select_box_2 .good_head2').size() != 0)
			{
				countPrices();
				$('#select_box').show();
			}
			else $('#select_box').hide();
		
			if (cons === true) 	
			{
				if (modal_const == 1) $('#set_1').val(set_id);
				else $('#set_2').val(set_id);
			}		
		}
	})
}

function loadConstSet(set_id, el)
{
	$('#modal_tabs a').removeClass('act');
	$(el).addClass('act');

	$.ajax({
		url: '/webAjax/goods/loadConstSet/?set_id=' + set_id + '&tmpl=goods_modal.html',
		success: function(data)
		{
			$('#modal_const_data').html(data);
			
			$('.m_good').each(
				function()
				{
					var good_id = $(this).attr('rel');
					var content = $('#good_desc_' + good_id).val();
					if (content != '') $(this).popup({ className: 'imp_popup2', event: 'mouseover', content: content, zIndex: 100002, width: 'auto' });
				}
			);			
			
		}
	});
}

function showModalAction(num)
{
	modal_const = num;
	$.modal({ title: 'Выберите блюдо', url: '/webAjax/goods/showModalAction/?tmpl=modal_action.html',  start: function() {  }, height: false, position: 'top', top: 70, fixed: false });
}


function showModalConst(num)
{
	modal_const = num;
	var set_1 = $('#set_1').val();
	var set_2 = $('#set_2').val();
	$.modal({ title: 'Выберите блюдо', url: '/webAjax/goods/showModalConst/?tmpl=modal_const.html&num=' + num + '&set_1=' + set_1 + '&set_2=' + set_2,  start: function() {  }, height: false, position: 'top', top: 70, fixed: false });
}

function showGood(good_id)
{
	$.modal({ title: '', url: '/webAjax/goods/good/?tmpl=good.html&good_id=' + good_id, height: false, position: false, top: false });
}

function showOrder()
{
	
	$.modal({ title: 'Оформление заказа', url: '/webAjax/goods/order/?tmpl=order.html',  start: function() {  }, height: false, position: 'top', top: 70, fixed: false });
}

function showOrderAgain(order_id)
{
	$.modal({ title: 'Оформление заказа', url: '/webAjax/goods/order/?tmpl=order.html&order_id=' + order_id,  start: function() { $(document).scrollTop(0); }, height: false, position: 'top', top: 70, fixed: false });
}


function showSubscribe()
{
	$.modal({ title: 'Подписка на новости', url: '/webAjax/news/subscribe/?tmpl=subscribe.html',  height: 270, position: false, top: false });
}


function gameMirror()
{
	if ($('#game_mark_mirror').val() == '1')
	{	
		$('#game_mark').val($('#game_mark_mirror').val());
		$('#game_mark_id').val($('#game_mark_id_mirror').val());
		$('#game_mark_type').val($('#game_mark_type_mirror').val());
		$('#game_mark_variant').val($('#game_mark_variant_mirror').val());	
	}
}

function showAuth()
{
	$.modal({ title: 'Вход в личный кабинет', url: '/webAjax/users/loginObserve/?tmpl=auth.html', height: 300, position: false, top: false, end: gameMirror });
}


function showReg()
{
	$.modal({ title: 'Регистрация', url: '/webAjax/users/regObserve/?tmpl=reg.html', height: 300, position: false, top: false, end: gameMirror });
}

function showForgot()
{
	$.modal({ title: 'Восстановление пароля', url: '/webAjax/users/forgotObserve/?tmpl=forgot.html',  height: 270, position: false, top: false });
}

function forgotSubmit()
{
	$.ajax({
		url: '/webAjax/users/forgot/?user_email=' + $('#user_email_forgot').val(),
		success: function(data)
		{
			$('#forgot_table').hide();
			$('#forgot_table').after($('<p  style="width: 500px;" class="bold">Новый пароль отправлен по указанному адресу.</p>'));
		}
	});
}

function reSubmit()
{
	$.ajax({
		url: '/webAjax/responses/send/',
		type: 'post',
		data: $('#reForm').serialize(),
		success: function(data)
		{
			$('#re_box').html('<p  style="width: 500px;" class="bold">Спасибо. Ваш отзыв будет опубликован после проверки администрацией.</p>');
		}
	});	
}

function sendSubscribe()
{
	var semail = $('#semail').val();
	if (semail == '') return false;
	
	$('#subscribe_form').hide();
	$('#subscribe_result').show();
	
	$.ajax({
		url: '/webAjax/news/addSubscribe/?semail=' + semail
	});	
}

function saveUserSettings()
{
	$.ajax({
		url: '/webAjax/users/profile/saveUserSettings/',
		type: 'post',
		data: $('#userSettings').serialize(),
		success: function(data)
		{
			$.message('Настройки сохранены.', { once: true });
		}
	});
}


function saveChangePassword()
{
	$.ajax({
		url: '/webAjax/users/profile/changePassword/',
		type: 'post',
		data: $('#changeForm').serialize(),
		success: function(data)
		{
			$('#user_password_old, #user_new_password').val('');
			$.message('Настройки сохранены.', { once: true });
		}
	});
}

var nums = 1;
function photoRandom()
{
	var box = $('#index_image .set_image');
	var size = box.size();	

	if (nums == size) setIndexPhoto($('#n1'), 1, true);		
	else 
	{
		nums++;
		setIndexPhoto($('#n' + nums), nums, true);
	}
}

function setIndexPhoto(el, num, random)
{
	if ($(el).hasClass('act')) return false;
	
	if (random !== true)
	{
		clearInterval(re);
	}
	
	nums = num;
	

	
	$('.nphoto').removeClass('act');
	
	var box = $('#index_image .set_image');
	var size = box.size();
	
	num = num-1;

	
	$(el).addClass('act');	
	
	var now = $('#index_image .set_img_now');
	
			
	now.fadeOut(3000);
	box.eq(num).fadeIn(2000, function()
	{
		box.removeClass('set_img_now');	
		box.eq(num).addClass('set_img_now');	
		
		if (random !== true)
		{
			re = setInterval(function()
			{
				photoRandom();
			}, 30000);								
		}		
		
	});

}

function photoPrev(id)
{
	var num = $('#num').text();	

	if (num == 1) return false;

	if (num == 2) 
	{
		$('#control_prev').addClass('act');	
		$('#control_next').removeClass('act');		
	}
	else
	{
		$('#control_next').removeClass('act');
		$('#control_prev').removeClass('act');
			
	}

	
	num = num-2;

	var photo = $('.photo_set').eq(num).html();
	$('#photo_box').html(photo);	
	
	$('#num').text(num+1);	
}

function photoNext(id)
{
	var num = $('#num').text();
	var size = $('.photo_set').size();
	
	if (num == size) return false;
	
	var photo = $('.photo_set').eq(num).html();
	$('#photo_box').html(photo);
	num++;
	if (num == size) $('#control_next').addClass('act');
	
	$('#control_prev').removeClass('act');
	
	$('#num').text(num);
}


/* =Orders
-----------------------------------------------------------------------------*/
function clearConst(action)
{
	$('#good_select_box_1, #good_select_box_2, #good_select_box_3').hide().html('');
	$('#good_select_1, #good_select_2, #good_select_3').show();
	$('#good_select_link_1, #good_select_link_2, #good_select_link_3').text('Выбрать');
	$('#select_box').hide();
	$('#const_desc1, #const_desc2, #const_desc3').text('');
	if (action === true) $('#const_desc').text('Набор не собран, выберите три блюда.');
	else $('#const_desc').text('Обед еще не собран, выберите два блюда.');
}

function countPrices()
{
	var num = new Number($('#good_big_num').val());
	
	if ($('#good_select_box_1 .good_price_value').size() != 0) var good_price1 = new Number($('#good_select_box_1 .good_price_value').val());
	else var good_price1 = 0;

	if ($('#good_select_box_2 .good_price_value').size() != 0) var good_price2 = new Number($('#good_select_box_2 .good_price_value').val());
	else var good_price2 = 0;	

	
	if (typeof(good_price1) == NaN) good_price1 = 0;
	if (typeof(good_price2) == NaN) good_price2 = 0;
	
	if ($('#good_select_box_1 .good_discount_value').size() != 0) var good_discount1 = new Number($('#good_select_box_1 .good_discount_value').val());
	else var good_discount1 = 0;
	
	if ($('#good_select_box_2 .good_discount_value').size() != 0) var good_discount2 = new Number($('#good_select_box_2 .good_discount_value').val());	
	else var good_discount2 = 0;

	if (typeof(good_discount1) == NaN) good_discount1 = 0;
	if (typeof(good_discount2) == NaN) good_discount2 = 0;

	
	var good_price = num * (good_price1 + good_price2);
	var good_discount = num * (good_discount1 + good_discount2);	
	
	$('#good_price_const').text(good_price);
	$('#good_discount_const').text(good_discount);
}

function countGoodsAction(type)
{
	var element = '#good_big_num';

	var num = new Number($(element).val());
	if (typeof(num) == NaN) num = 0;
	if (num == 0) 
	{
		$(element).val(1)
		return false;
	}
	
	if (type == 'plus') 
	{
		num++;
		$(element).val(num)
	}
	else 
	{
		num--
		if (num == 0)
		{
			num = 1;
			return true;
		}
		$(element).val(num)
	}
	
	var sum = ACTION_SUM*num;
	$('#good_price_num').text(sum)
}


function countGoodsConst(type)
{
	var element = '#good_big_num';

	var num = new Number($(element).val());
	if (typeof(num) == NaN) num = 0;
	if (num == 0) 
	{
		$(element).val(1)
		return false;
	}
	
	if (type == 'plus') 
	{
		num++;
		$(element).val(num)
	}
	else 
	{
		num--
		if (num == 0)
		{
			num = 1;
			return true;
		}
		$(element).val(num)
	}
	
	countPrices();
}

function countGoods(id, type, big, hash)
{
	if (big === true) var element = '#good_big_num_' + id;
	else var element = '#good_num_' + id;

	var num = new Number($(element).val());
	if (typeof(num) == NaN) num = 0;
	if (num == 0) 
	{
		$(element).val(1)
		return false;
	}
	
	if (type == 'plus') 
	{
		num++;
		$(element).val(num)
	}
	else 
	{
		num--
		if (num == 0)
		{
			num = 1;
			return true;
		}
		$(element).val(num)
	}
	
	
	if (big === true) 
	{
		var sum = new Number($('#good_o_price_' + id).attr('rel'));
		var osum = sum*num;
		$('#good_o_sum_' + id).text(osum + ' р.');
		
		var asum = new Number($('#o_all').text());
		if (type == 'plus')
		{
			$('#o_all').text(asum+sum);
			all_sum = asum+sum;
		}
		else
		{
			$('#o_all').text(asum-sum);	
			all_sum = asum-sum;
		}
		
		$.ajax({ url: '/webAjax/goods/updateBasket/?basket_hash=' + hash + '&good_id=' + id + '&good_nums=' + num });
		
		var city_sum = $('#city_sum').val();
		
		if (all_sum < city_sum) 
		{
			$('#info_order_city').show();
			$('#info_order_num').hide();
			$('#order_btn, #step_btn').attr('disabled', true);							
		}							
		else
		{
			$('#info_order_num, #info_order_city').hide();
			$('#order_btn, #step_btn').attr('disabled', false);
		}		
	}
}

function showOrderBox(el, type)
{
	$('#order_tabs a').removeClass('act');
	$(el).addClass('act');
	
	if (type == 1)
	{
		$('#reg_box').hide();
		$('#orderForm').show();
		$('#orderAuthForm').hide();	
				
	}
	else if (type == 2)
	{
		$('#reg_box').show();
		$('#orderForm').show();
		$('#orderAuthForm').hide();
	}
	else if (type == 3)	
	{
		$('#reg_box').hide();
		$('#orderForm').hide();		
		$('#orderAuthForm').show();
	}
	
	if (type == 2)	
	{
		val1.add('user_r_email', 'Ajax', { url: '/webAjax/users/testDuplicateEmail/', text: 'На такой адрес уже зарегистрирован аккаунт'});
		val1.add('user_r_email', 'isEmail');
		val1.add('user_r_password', 'isNotEmpty');
		val1.add('user_r_password_again', 'isMatch', { target: 'user_r_password' });		
	}
	else
	{
		val1.remove('user_r_email', 'Ajax', { url: '/webAjax/users/testDuplicateEmail/', text: 'На такой адрес уже зарегистрирован аккаунт'});
		val1.remove('user_r_email', 'isEmail');
		val1.remove('user_r_password', 'isNotEmpty');
		val1.remove('user_r_password_again', 'isMatch', { target: 'user_r_password' });		
	}
	
}

/* =Utils
-----------------------------------------------------------------------------*/
function showCaptcha(name)
{
	$.ajax({
		url: '/webAjax/users/showCaptcha/',
		success: function(data)
		{
			if (typeof(name) != 'undefined') $('#captcha_order').html(data);
			$('#captcha').html(data);
		}
	});
}


function urldecode(str)
{	
	return decodeURIComponent(str.replace(/\+/g, '%20'));
}

function stripslashes( str ) {  
	return (str+'').replace(/\0/g, '0').replace(/\\([\\'"])/g, '$1');
}
