function serializeOrder() {
	var order = '';

	$('select').each(function (i) {
		var id = $(this).attr('id');
		var val = parseInt($(this).val());
		if ((id.substr(0, 9) == 'quantity_') && (val > 0)) order += '&' + id.replace('quantity', 'product') + '=' + val;
	});

	return order;
}

function serializePerson() {	var person = '&update_data=' + $('#update_data:checked').length;

	$('#form_person input[type=text]').each(function (i) {		person += '&' + $(this).attr('id') + '=' + $(this).val();
	});
	person += '&region=' + $('#region').val();

	return person;
}

function updateProgressbar() {	$("#progress_bar td").removeClass('active');
	$("#progress_bar td:eq(" + (stage - 1) +")").addClass('active');

	$("#progress_bar td a").each(function (i) {
		$(this).replaceWith($("#progress_bar td a").html());
	});

	if (stage > 1) $("#progress_bar td:eq(" + (stage - 2) +") .progress_text").wrapInner('<a href="#" onclick="' + "$('#backButton').click(); return false;" + '"></a>');
	if (stage < 5) $("#progress_bar td:eq(" + (stage) +") .progress_text").wrapInner('<a href="#" onclick="' + "$('#makeOrder').click(); return false;" + '"></a>');
}

function toggleButtons(attr, status) {	$('#buttons_container input[type=button]').each(function (i) {
		$(this).attr(attr, status);
	});
}

function setStage() {	$("#makeOrder").unbind('click');

	$("#makeOrder").bind('click', function() {
   		var btn = $(this);
   		toggleButtons("disabled", "disabled");

           var form_data = '';
           if (stage == 0) // вывод списка товаров
           		form_data = 'formAction=initList'
           else
           if (stage == 1) { // создание заказа
           		var order_str = serializeOrder();
           		if (order_str.length > 0) form_data = 'formAction=createOrder' + order_str
           		else alert('Пожалуйста, сначала выберите товар.');
           }
           else
           if (stage == 2) { // указание доставки
           		var delivery_id = $("#main_container input.delivery:checked").val();
           		var delivery_price = $("#delivery_price_" + delivery_id).text();
           		form_data = 'formAction=setDelivery&delivery=' + $("#main_container input.delivery:checked").val() + '&delivery_price=' + delivery_price;
           		$('#delivery_price').text(delivery_price);
           }
           else
           if (stage == 3) // указание оплаты
           	form_data = 'formAction=setPayment&payment=' + $("#main_container input.payment:checked").val();
           else
           if (stage == 4) { // персональные данные           		var errors = checkFields();           		if (errors == '') form_data = 'formAction=setPerson' + serializePerson();
           		else alert('Не заполнены обязательные поля:\n' + errors);           		toggleButtons("disabled", "");
           }
           else
           if (stage == 5) { // выход
           	    if ((app != 'vkontakte') || canFinishOrder) form_data = 'formAction=clearData'
           	    else {           	    	toggleButtons("disabled", "");					var params = {
						merchant_id: 17007,
						test_mode: 1,
						item_id_1: $('#order_id').text(),
						item_name_1: 'Заказ N' + $('#order_id').text(),
						item_description_1: 'Книжный магазин издательства "Сафари": заказ N' + $('#order_id').text(),
						item_currency_1: 'RUB',
						item_price_1: $('#total_sum').text(),
						item_quantity_1: 1,
						item_digital_1: 1
					};
					VK.callMethod('showMerchantPaymentBox', params);
           	    }
           }

		if (form_data != '') {			$("#main_container").html('<div class="loading"></div>');
			$.ajax({
				type: "POST",
				url: "/make_order.php",
				data: 'app=' + app + '&' + form_data,
				success: function(msg){
					$("#main_container").html(msg);
					toggleButtons("disabled", "");
					stage++;
					if (stage > 1) $("#backButton").show();
					if (stage == 5) {						$("#makeOrder").addClass("makeOrder").val('Подтвердить заказ');
					}
					if (stage < 5) {						updateInfoPanel();
						updatePrices();
					}
					updateProgressbar();
				},
				error: function(msg) {
					alert("Технический сбой при оформлении заказа.");
				}
			});
           }

		return false;
   });

	$("#backButton").unbind('click');

	$("#backButton").bind('click', function() {
   		var btn = $(this);
        toggleButtons("disabled", "disabled");

           var form_data = '';
           if (stage == 2) // вывод списка товаров
           		form_data = 'formAction=initList'
           else
           if (stage == 3) // создание заказа
           		form_data = 'formAction=createOrder&mode=back'
           else
           if (stage == 4) // указание доставки
           		form_data = 'formAction=setDelivery&mode=back'
           else
           if (stage == 5) // указание оплаты
				form_data = 'formAction=setPayment&mode=back';
           else
           if (stage == 6) // персональные данные
           		form_data = 'formAction=setPerson&mode=back';

		if (form_data != '') {
			$("#main_container").html('<div class="loading"></div>');
			$.ajax({
				type: "POST",
				url: "/make_order.php",
				data: 'app=' + app + '&' + form_data,
				success: function(msg){
					$("#main_container").html(msg);
					stage--;
					if (stage < 5) {						$("#makeOrder").removeClass("makeOrder").val('Далее ' + String.fromCharCode(187));
					}
					if (stage < 2) $("#backButton").hide();
					updateProgressbar();
					toggleButtons("disabled", "");
					updateInfoPanel();
					updatePrices();
				},
				error: function(msg) {
					alert("Технический сбой при оформлении заказа.");
				}
			});
           }

		return false;
   });
}

function recalcOrderSum() {
	var order_sum = 0;
	$('span.sum').each(function (i) {
		var id = $(this).attr('id');
		order_sum += parseFloat($(this).text());
	});
	$('#order_sum').text(order_sum);
	$('#total_sum').text(order_sum + parseInt(0 + $('#delivery_price').text(), 10));

	if (order_sum > 0) $("#makeOrder").attr("disabled", "")
	else $("#makeOrder").attr("disabled", "disabled")
}

function recalcTotalWeight() {
	var total_weight = 0;
	$('span.weight').each(function (i) {
		var id = $(this).attr('id');
		var product_id = id.replace('weight_', '');
		total_weight += parseInt($(this).text()) * $('#quantity_'+product_id).val();
	});
	$('#total_weight').text(total_weight / 1000);
}

function recalcSum(product_id) {
	var quantity = parseInt($('#quantity_'+product_id).val());
	if (isNaN(quantity)) quantity = 0;

	var max_quantity = parseInt($('#maxquantity_'+product_id).val());
	if (isNaN(max_quantity)) max_quantity = 0;

	var price = 0;
	if (quantity < max_quantity) {
		price = parseFloat($('#price_'+product_id).text());
		$('#price_'+product_id).addClass('bold');
		$('#optprice_'+product_id).removeClass('bold');
	} else {
		price = parseFloat($('#optprice_'+product_id).text());
		$('#optprice_'+product_id).addClass('bold');
		$('#price_'+product_id).removeClass('bold');
	}
	if (isNaN(price)) price = 0;

	$('#sum_'+product_id).text(price*quantity);
	$('#delivery_price_container').text('не рассчитано');

	recalcOrderSum();
	recalcTotalWeight();
}

function updateDeliveryPrice(id) {	if (!id) id = $("#main_container input.delivery:checked").val();	var obj = $('#delivery_price_' + id);
	if (obj.text() != '') {		$('#delivery_price_container').html('<span id="delivery_price" class="bold">' + obj.text() + '</span> руб.');
		$('#total_sum').text(parseFloat(obj.text()) + parseFloat($('#order_sum').text()));
	} else {		$('#delivery_price_container').text('не рассчитано');
		$('#total_sum').text(parseFloat($('#order_sum').text()));
	}
}

function updatePrices() {
	$('#main_container select').change();
}

function updateInfoPanel() {	$("#info_panel").html('<div class="loading"></div>');
	$.ajax({
		type: "POST",
		url: "/make_order.php",
		data: 'app=' + app + '&formAction=updateInfoPanel&stage='+stage,
		success: function(msg){
			$("#info_panel").html(msg);
			if (stage == 2) updateDeliveryPrice(false);
		},
		error: function(msg) {
			alert("Технический сбой при обновлении данных.");
		}
	});

}

function getCities(region_id) {	if (region_id > 0) {
		$('#city').html('<option>Загрузка...</option>');

		$.ajax({
			type: "POST",
			url: "/make_order.php",
			data: 'app=' + app + '&formAction=getCities&region=' + region_id,
			success: function(msg){
				$("#city").html(msg);
			},
			error: function(msg) {
				alert("Технический сбой.");
			}
		});
	}
}

function getPostAmount(post_area) {
	if (post_area > -1) {
		$("#post_amount").text('Идет обработка данных. Подождите, пожалуйста...');

		$.ajax({
			type: "POST",
			url: "/make_order.php",
			data: 'app=' + app + '&formAction=getPostAmount&post_area=' + post_area,
			success: function(msg){
				$("#post_amount").html(msg);
				updateDeliveryPrice(1);
			},
			error: function(msg) {
				alert("Технический сбой.");
			}
		});
	}
}

function getCPCRAmount(city_id) {	if (city_id > 0) {
		$("#cpcr_amount").text('Идет обработка данных. Подождите, пожалуйста...');

		$.ajax({
			type: "POST",
			url: "/make_order.php",
			data: 'app=' + app + '&formAction=getCPCRAmount&city=' + city_id,
			success: function(msg){
				$("#cpcr_amount").html(msg);
				updateDeliveryPrice(false);
			},
			error: function(msg) {
				alert("Технический сбой.");
			}
		});
	}
}
