//что должно проихсодить в случае успешного добавления товара в корзину
function add2CartSuccess(clickedObj, sum, itemsAmount){ 
   	clickedObj.text("добавлен");
   	clickedObj.addClass("inCart");
	$("#basket span").text("["+sum+" руб.]");
	cursorNormal();
}

//что должно проихсодить в случае ошибки при добавлении товара в корзину
function add2CartFail(clickedObj,serverError){
	showError(1,serverError);
	cursorNormal();
} 

//что делать при успешной отправки заказа
function sendOrderSuccess() {
	updateCartLine(0,0); 
	$("#cartBlock").html("Спасибо за Ваш заказ. Мы свяжемся с Вами в ближайшее время.")

}

//функция вывода ошибок
function showError(errorType,serverErrorMessage){
	switch(errorType) {
		case 1: //добавление товара в корзину
			errorText = "Произошла ошибка при добавлении товара в корзину. Попробуйте повторить попытку чуть позже.";
			break;
		case 2: //отправка простого сообщения
			errorText = "Произошла ошибка при отправке сообщения. Попробуйте повторить попытку чуть позже.";
			break;
		case 3: //отправка заказа
			errorText = "Произошла ошибка при отправке Вашего заказа. Попробуйте повторить попытку чуть позже.";
			break;
		default:
			errorText = "Произошла ошибка. Попробуйте повторить попытку чуть позже.";
			break;
	}
	if(serverErrorMessage)
		errorText+="\n\nТекст ошибки:\n"+serverErrorMessage;
	alert(errorText);
} 

//Функция разделяет число с точкой на разряды
function insertSpaces(str){ 
	str+="";
	return str.replace(/\d{3}[\.,]\d{1,2}$/g, ' $&');
}

//обновление строчки "ваша корзина" и поле "итого" в корзине
function updateCartLine(sum, itemsAmount){ 
	if(sum>0) {
		$(".basket .price").html(insertSpaces(sum)+' <span style="font-size: 8px;">РУБ</span>');
		$("#cartTotal .sum").text(insertSpaces(sum));
		}
	else
		$(".basket .price").html('');
} 

//проставка статусов "добавлен" в замен "в корзину"
function setAdd2CartLinks(itemIds,itemsAmount){
	for(i=0;i<itemsAmount;i++) {
		curLink = $(".add2Cart[id="+itemIds[''+i+'']+"]");
		curLink.text("добавлен");
		curLink.addClass("inCart");
	}
}

//функция проверяет корректность строки на соответствеие JSON
function isValidJSON(src) {
	if(src=="")
		return false;
    var filtered = src;
    filtered = filtered.replace(/\\["\\\/bfnrtu]/g, '@');
    filtered = filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');
    filtered = filtered.replace(/(?:^|:|,)(?:\s*\[)+/g, '');

    return (/^[\],:{}\s]*$/.test(filtered));
};


//получаем количество товаров в корзине и общую сумму
function getCartLine() { 
	params = new Object();
	params.action = "getCartLine";
	$.get("/cart/cartFunctions.php", params, 
		function(data) {
			if(isValidJSON(data)) {
				var res = jQuery.parseJSON(data)
				//		if(data.successCode=="1") {
				updateCartLine(res.sum,res.itemsAmount);
				setAdd2CartLinks(res.itemIds,res.itemsAmount);
			} 
  		});
}

$(document).ready(function() {
	//добавление товаров в корзину
	$(".add2Cart").click(function() {
		clickedObj = $(this);
		showErrorFlag = false;
		params = new Object();
		params.action = "add2Cart";
		params.id = clickedObj.attr("id");
		params.price = clickedObj.attr("price");
		cursorWait();
		
		$.get("/cart/cartFunctions.php", params, 
			function(data){ 
				if(isValidJSON(data)) { 
					var res = jQuery.parseJSON(data);
					if(res.successCode=="1") {  
						add2CartSuccess(clickedObj,res.sum,res.itemsAmount);
						updateCartLine(res.sum,res.itemsAmount);  
						}
					else 
						showErrorFlag = true;
						cursorNormal();
				}
				else 
					showErrorFlag = true;
			if(showErrorFlag) {
					add2CartFail(clickedObj,data);
					cursorNormal();
				}

	   });
	return false;
	});	
	
	//отправка заказа
	$(".sendOrder").click(function() {
		showErrorFlag = false;
		params = new Object();
		params.action = "sendOrder";
		var fieldNum = 1;
		$("#orderForm .input4Send").each(function(){
			fieldName = $(this).attr("description")==undefined?$(this).attr("original_value"):$(this).attr("description");
			params["field"+fieldNum] = fieldName+": "+$(this).val();
			fieldNum++;
			}); 

		cursorWait();
	//	alert(print_r(params,true));
		$.get("/cart/cartFunctions.php", params, 
			function(data){ 
				//alert(data);
				var reg = new RegExp("[^{]*")
				data = data.replace(reg,"");
				
				if(isValidJSON(data)) {  
					var res = jQuery.parseJSON(data);
					if(res.successCode=="1") {  
						sendOrderSuccess();
						}
					else 
						showErrorFlag = true;
						cursorNormal();
				}
				else 
					showErrorFlag = true;
			if(showErrorFlag) {
				cursorNormal();
				showError(3,data);			
				}

	   });
	return false;
	});	
	
	//удаляем товар из корзины
	$(".cartTable .delete").click(function() {
		clickedObj = $(this);
		showErrorFlag = false;
		params = new Object();
		params.action = "deleteItem";
		params.id = clickedObj.attr("itemId");
		cursorWait();
			
		$.get("/cart/cartFunctions.php", params, 
			function(data){ 
				if(isValidJSON(data)) {
					var res = jQuery.parseJSON(data);
					if(res.successCode=="1") {
						itemId = clickedObj.attr("itemId"); 
						$(".itemBlock[itemId="+itemId+"]").hide();
						getCartLine();
						}
					else
						showErrorFlag = true;
					cursorNormal();
					}
				else
					showErrorFlag = true;
			if(showErrorFlag) {
				showError(0,data);
				cursorNormal();
				}
		});
	return false;
	});

	
	//Обновляем сумму и количество товаров в строке "Ваша корзина"
	getCartLine();
	
	$(".inputAmount").change(function() {
		clickedObj = $(this);
		showErrorFlag = false;
		params = new Object();
		params.action = "updateAmount";
		params.id = clickedObj.attr("itemId");
		params.amount = clickedObj.val();
		cursorWait();
			
		$.post("/cart/cartFunctions.php", params, 
			function(data){ 
				if(isValidJSON(data)) {
					var res = jQuery.parseJSON(data);
					if(res.successCode=="1") {
						getCartLine();
						}
					else
						showErrorFlag = true;
					cursorNormal();
					}
				else
					showErrorFlag = true;
			if(showErrorFlag) {
				showError(0,data);
				cursorNormal();
				}
		});
	return false;
 //	updateCatrInfo();
	});

	$("form").submit(function() { 
	 	updateCatrInfo();
	});

});

//Функции отправки сообщений на email

function sendMail(message, callback) {
	params = new Object();
	showErrorFlag = false;
	params.action = "sendMail";
	params.message = message;
	cursorWait(); 
//	  alert(print_r(params,true));
	
	$.get("/cart/cartFunctions.php", params, 
		function(data){
			if(isValidJSON(data)) { 
				var res = jQuery.parseJSON(data)
				if(res.successCode=="1") {
					cursorNormal();
					callback();
				}
				else
					showErrorFlag = true;
				}
			else
				showErrorFlag = true;
		if(showErrorFlag) {
			showError(2,data);
			cursorNormal();
			}
   	});
}
