$(function(){	
	function cart_reload() {
		$('#panel_cart').load('/order/a_cart_panel/');
	}	
    $('#cart_alert_close').live('click', function(){
        $('#cart_alert').fadeOut();
        return false;
    });
    $('.buy_form').live('submit', function(){
        $('#cart_alert').hide();
        var alert_left = $(this).offset().left - 150;
        var alert_top = $(this).offset().top - 50;
        if (alert_left < 50) 
            alert_left = 50;
        $('#cart_alert').css({
            "left": alert_left + 'px',
            "top": alert_top + 'px'
        });
        var options = {
            dataType: 'json',
            success: function(data){
                if (data.status == 'success') {
                    cart_reload();
                    var msg = 'Товар добавлен в корзину';
                    //var msg = 'Добавлено в заказ:<br>'+data.name;
                    //if (data.param) msg += ' ('+data.param+')';	
                    msg = cart_alert_box(msg, data.url);
                    $('#cart_alert').html(msg);
                    if (data.url_addons != '') {
                        $('#ca_accss_link').show();
                    }
                    else {
                        $('#ca_accss_link').hide();
                    }
                    $('#cart_alert_buttons').show();
                    $('#cart_alert').show().fadeIn(800);
                }
                else {
                    var msg = cart_alert_box('Ошибка при добавлении! ' + data.error);
                    $('#cart_alert').html(msg);
                    $('#cart_alert_buttons').hide();
                    $('#cart_alert').fadeIn(800).fadeOut(400);
                }
            },
            resetForm: true
        };
        $(this).ajaxSubmit(options);
        return false;
    });
    function cart_alert_box(msg, url){
        return '<div class="cart_alert_pos"> \
		<div class="ca_top"><span id="cart_alert_msg">' + msg + '</span> \
</div> \
<div id="cart_buttons"><a href="/cart/">Оформить заказ</a> \
<a href="' +
        url +
        '#pos_accss" class="ca_accss_link" id="ca_accss_link">Подобрать аксессуары</a><br> \
<a id="cart_alert_close" href="#">Закрыть</a></div> </div>';
    }
    $('.cart_del').live('click', function(){
        var t = $(this);
        var u = t.attr('href');
        t.closest('tr').find("td").fadeOut(500, function(){
            $(this).parent().remove();
        });
        $.getJSON(u, function(data){
            if (data.status == 'success') {
                if (data.total_num == 0) {
                    //history.back();
                    window.location = '/cart/';
                }
                $('#order_total_sum').text(data.total_sum);
                cart_reload();
                refresh_total();
            }
        });
        return false;
    });
    
    $('.cart_minus').click(function(){
        var inp = $(this).next('input');
        var v = Number(inp.val());
        if (v == 1) 
            return;
        v = v - 1;
        if (v < 1) 
            v = 1;
        inp.val(v);
        refresh_order_item(inp.closest('tr'));
        refresh_total();
        $.getJSON(inp.attr('ahref') + '&num=' + v, function(){
            cart_reload();
        });
    });
    $('.cart_plus').click(function(){
        var inp = $(this).prev('input');
        var v = Number(inp.val());
        if (v == 100) 
            return;
        v = v + 1;
        inp.val(v);
        refresh_order_item(inp.closest('tr'));
        refresh_total();
        $.getJSON(inp.attr('ahref') + '&num=' + v, function(){
            cart_reload();
        });
    });
    var total_price = Number(0);
    $('input.order_item_num').change(function(){
        var v = Number($(this).val());
        if (v < 1) {
            $(this).val('1')
        }
        else 
            if (v > 100) {
                $(this).val('100')
            }
        refresh_order_item($(this).closest('tr'));
        refresh_total();
        cart_reload();
    });
    function refresh_order_item(t){
        var tsum;
        tsum = Number(t.attr('price')) * Number($('.order_item_num', t).val());
        t.attr('sum', tsum);
        $('.cart_order_sum', t).text(format_price(tsum));
    }
    var discount = Number(0);
    function get_discount(){
        if ($('#order_discount').length) {
            return Number($('#order_discount').attr('discount'));
        }
        else {
            return 100;
        }
    }
    function refresh_total(){
        total_price = 0;
        $('.cart_order_item').each(function(i){
            total_price = total_price + Number($(this).attr('sum'));
        });
        $('#order_total_sum').text(format_price(total_price));
        if (discount == 0) 
            discount = get_discount();
        if (discount != 100) {
            total_price_d = total_price * discount / 100;
            discount_sum = total_price - total_price_d;
            $('#order_discount_sum').text(format_price(discount_sum));
            $('#order_total_sum_discounted').text(format_price(total_price_d));
        }
    }
    function format_price(nStr){
        nStr = Math.round(nStr);
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ' ' + '$2');
        }
        return x1 + x2;
    }
    
    $('div.a_panel').each(function(){
        var u = $(this).find('a.noex_ajax_link').attr('href');
        $(this).load(u);
    });
	
    //order_fast	
	
    $("#order_fast_form").live("submit", function(event){
        $.fancybox.hideActivity();
        var thisform = $(this);
		var thisholder = $("#fast_order_holder");
		var isvalid = order_fast_form_check();
		if (!isvalid) {
			$.fancybox.resize();
			event.preventDefault();
			return false;
		}
        $("b", thisholder).text('');
        $.fancybox.showActivity();		
        $.ajax({
            type: "POST",
            cache: false,
            url: thisform.attr('action'),
            dataType: 'json',
            data: $(this).serializeArray(),
            success: function(json, textStatus){
                // Если произошла ошибка
                $.fancybox.hideActivity();
                if (json.status == 'error') {
                    if (json.error.all) 
                        thisholder.find(".error").html(json.error.all);
                    if (json.error.name) 
                        thisholder.find(".error_name").html(json.error.name);
                    if (json.error.email) 
                       	thisholder.find(".error_email").html(json.error.email);
                    if (json.error.phone) 
                        thisholder.find(".error_phone").html(json.error.phone);
					if (typeof(json.error)=='string') 
                        thisholder.find(".error").html(json.error);
					$.fancybox.resize();		
                }
                else {
                    if (json.message) {
                        $("#fast_order_holder").html(json.message);
						$.fancybox.resize();
                    }
                    // Выполнено без ошибок
                    if (json.redirect) {
                        window.location = json.redirect;
                    }
                    //$.fancybox.close();
                }                
            }
        });
        return false;
    });
    
});

function order_fast_form_check() {
	var isvalid = true;		
	isvalid = order_fast_input_check_name('#fast_order_name') && isvalid;
	isvalid = order_fast_input_check_email('#fast_order_email') && isvalid;
	isvalid = order_fast_input_check_phone('#fast_order_phone') && isvalid;
	isvalid = order_fast_input_check_comment('#fast_order_comment') && isvalid;
	return isvalid;				
}

function order_fast_input_check_name(name) {
	var isvalid = false;	
	inp = $(name);
	if (!valid_input_required(inp.val(),inp)) valid_set_error(inp,'Введите Ваше имя');
	else if (!valid_input_minlength(inp.val(),inp, 3)) valid_set_error(inp,'Минимум 3 символа');
	else if (!valid_input_maxlength(inp.val(),inp, 20)) valid_set_error(inp,'Максимум 20 символов');
	else if (!valid_input_alpha_re(inp.val(),inp)) valid_set_error(inp,'Введены недопустимые символы');
	else { isvalid = true; valid_unset_error(inp); } 				
	return isvalid;
}

function order_fast_input_check_email(name) {
	var isvalid = false;
	inp = $(name);
	//if (!valid_input_required(inp.val(),inp)) valid_set_error(inp,'Введите Ваш email');
	if (!valid_input_required(inp.val(),inp)) return true;
	else if (!valid_input_email(inp.val(),inp)) valid_set_error(inp,'Email должен быть в формате name@domain.com');
	else { isvalid = true; valid_unset_error(inp); }
	return isvalid;
}

function order_fast_input_check_phone(name) {			
	var isvalid = false;	
	inp = $(name);
	if (!valid_input_required(inp.val(),inp)) valid_set_error(inp,'Введите телефон');
	else if (!valid_input_phone(inp.val(),inp)) valid_set_error(inp,'Введены недопустимые символы');
	else if (!valid_input_minlength(inp.val(),inp, 5)) valid_set_error(inp,'Минимум 5 символов');
	else if (!valid_input_maxlength(inp.val(),inp, 20)) valid_set_error(inp,'Максимум 20 символов');
	else { isvalid = true; valid_unset_error(inp); }	
	return isvalid;
}

function order_fast_input_check_comment(name) {		
	var isvalid = false;	
	inp = $(name);
	if (!valid_input_maxlength(inp.val(),inp, 150)) valid_set_error(inp,'Максимум 150 символов');
	else { isvalid = true; valid_unset_error(inp); }
	return isvalid;
}

	
init_fast_order_status = false;	
function init_fast_order(){
	if (init_fast_order_status) return false;
	init_fast_order_status = true;
	
	$('#fast_order_name').live({
		change: function(event){
			order_fast_input_check_name('#fast_order_name');
		},
		keyup: function(event){
			order_fast_input_check_name('#fast_order_name');
		},
		blur: function(event){
			order_fast_input_check_name('#fast_order_name');
		}
	});
	
	$('#fast_order_email').live({
		change: function(event){
			order_fast_input_check_email('#fast_order_email');
		},
		keyup: function(event){
			order_fast_input_check_email('#fast_order_email');
		},
		blur: function(event){
			order_fast_input_check_email('#fast_order_email');
		}
	});
	
	
	$('#fast_order_phone').live({
		change: function(event){
			order_fast_input_check_phone('#fast_order_phone');
		},
		keyup: function(event){
			order_fast_input_check_phone('#fast_order_phone');
		},
		blur: function(event){
			order_fast_input_check_phone('#fast_order_phone');
		}
	});	
	
	
	$('#fast_order_comment').live({
		change: function(event){
			order_fast_input_check_comment('#fast_order_comment');
		},
		keyup: function(event){
			order_fast_input_check_comment('#fast_order_comment');
		},
		blur: function(event){
			order_fast_input_check_comment('#fast_order_comment');
		}
	});		
 
}

