// some addition to jquery
$.postJSON = function(url, data, callback) {
    jQuery.post( url, data, callback, "json") ;
};



var lastMsg = 1;
function showMessage(msgs, type) {
    lastMsg++;
    if (type == 'ok') {
        title = 'Сообщение';
        mclass = 'msgs_ok';
    } else {
        title = 'Ошибка';
        mclass = 'msgs';
    }
    
    if (!(msgs instanceof Array)) {
    	msgs = [msgs];
    }
    
    try {
    	// hack
        title = '';
    	
	    var mid = 'msgs-'+lastMsg;
	    var messages = $('<div></div>');
	    for(i=0; i<msgs.length; i++) {
	        messages.append(msgs[i]);
	        if ((i+1) < msgs.length) {
	            messages.append($('<hr/>'));
	        }
	    }
	    var m = $('<div style="display:none;"><div></div><div>')
	        .attr('class', mclass)
	        .attr('id', mid)
	        .append(messages);
	    $('body').append(m);
	    
	    tb_show(title, '#TB_inline?height=100&width=300&inlineId='+mid, false);
	
    } catch(err) {
    	var messages = '';
    	for(i=0; i<msgs.length; i++) {
    		messages += msgs[i] + '\n';
 	    }
    	
    	alert(messages);
	}
}


function toggleTags()
{
    var t = $('#tags');
    var th = $('#tags-header');
    if (t.is(':visible')) {
        t.slideUp();
        th.css('background-image', th.css('background-image').replace('close', 'open'))
    } else {
        t.slideDown();
        th.css('background-image', th.css('background-image').replace('open', 'close'))
    }
}


/* PRODUCT FUNCTIONS  ------------------------------------------------------- */
function commentSubmit(pid)
{
    $.getJSON(
        '/product/'+pid+'/comment/', 
        $('#comment-form').serialize(), 
        function(data) {
            if (data['code']) {
                $('form.it-form').slideToggle();
                if (data['errors']) {
                    showMessage(data['errors'], 'ok');
                }
                setTimeout('location.href = "/product/'+pid+'/#comments";location.reload();', 2000);
            } else {
                showMessage(data['errors']);
            }
        }
    );
}

var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
function switchRegion(rid, img)
{
    $('table.pregion').hide();
    $('li.ril').removeClass('here');
    $('#ri-'+rid).show();
    $('#ril-'+rid).addClass('here');
    $('.bigpic-img').hide();
    if ($('span.bpr-'+rid).length > 0) {
        $('span.bpr-'+rid).css('display', 'inline-block');
    } else {
        $('img.bpr-'+rid).show();
    }
}

function addProductListener(pid) {
	
	email = $('#listenerEmail').val();
	
	if (!pid) {
		showMessage('Ошибка! Не указан товар.', 'error');
		return false;
	}
	 
	if (!email) {
		showMessage('Ошибка! Не указан e-mail.', 'error');
		return false;
	}
	 
	$.getJSON(
			'/product/listener/', 
	        {'id_products': pid, 'email': email},
	        function (data) {
	        	type = data['code'] ? 'ok' : 'error';
        		showMessage(data['msgs'], type);
	        }
	);
	
	return false;
}

function addToCart(pid)
{
    cart_add(pid, $('#ca-size').val(), $('#ca-qty').val());
    return false;
}

function sendForm(frm)
{
    $(frm).find('input[type=submit]').attr("disabled", "true"); 
    $.getJSON(
        '/sendform/', 
        $(frm).serialize(), 
        function(data) {
            if (data['code']) {
                if (data['errors']) {
                    showMessage(data['errors'], 'ok');
                }
                setTimeout(function() {location.href = '/';}, 1000);
            } else {
                showMessage(data['errors']);
                $(frm).find('input[type=submit]').attr("disabled", ""); 
            }
        }
    );
}


/* CART MANAGEMENT  --------------------------------------------------------- */
function cart_repaint(data)
{
    var num = 0;
    var sum = 0;
    for(var k in data)  {
        num += 1*data[k]['qty'];
        sum += 1*data[k]['qty']*data[k]['price'];
    }
    num = Math.round(num);
    sum = Math.round(sum*100)/100;
    if (num > 0) {
        $('#c-qty').html(num);
        $('#c-total').html(sum);
        $('#c-empty').hide();
        $('#c-full').show();
    } else {
        $('#c-full').hide();
        $('#c-empty').show();
    }
}

function cart_add(pid, size, qty)
{
    if (!pid) {
        showMessage('Ошибка! Не указан товар.', 'error');
        return false;
    }
    if (!size) {
        showMessage('Ошибка! Не выбран размер.', 'error');
        return false;
    }
    if (!qty) {
        showMessage('Ошибка! Не указано количество.', 'error');
        return false;
    }
    $.getJSON(
        '/cart/add/', 
        {'pid': pid, 'size': size, 'qty': qty},
        function () {
            location.href = '/cart/';
        }
    );
}

function cart_update(pid, size, qty)
{
    if (!pid) {
        showMessage('Ошибка! Не указан товар.', 'error');
        return false;
    }
    if (!size) {
        showMessage('Ошибка! Не выбран размер.', 'error');
        alert("Ошибка! Не выбран размер.");
        return false;
    }
    if (!qty) {
        showMessage('Ошибка! Не указано количество.', 'error');
        return false;
    }
    $.getJSON(
        '/cart/update/', 
        {'pid': pid, 'size': size, 'qty': qty},
        cart_repaint
    );
}

function cart_remove(pid, size)
{
	try {
	    if (!pid) {
	        showMessage('Ошибка! Не указан товар.', 'error');
	        return false;
	    }
	    if (!size) {
	        showMessage('Ошибка! Не выбран размер.', 'error');
	        alert("Ошибка! Не выбран размер.");
	        return false;
	    }
	    $.getJSON(
	        '/cart/remove/', 
	        {'pid': pid, 'size': size},
	        cart_repaint
	    );
	    
	    $('#item-'+pid+'-'+size).remove();
	    
	    return false;
	} catch(err) {
		return true;
	}
}


/* ORDER MANAGEMENT  -------------------------------------------------------- */
function order_update_total()
{
    var total = subtotal;
    
    // repaint delivery
    var el = $('input[name=id_deliveries]');
    var delivery = undefined;
    for(var i=0; i < el.length; i++) {
        var row = el.get(i);
        if (row.checked) {
            delivery = deliveries[row.value];
        }
    }
    if (delivery) {
        var delivery_price = delivery['price'];
        total += delivery_price;
        total = Math.round(100*total) / 100;
    }
    if (coupon != $('#coupon').val()) {
        coupon = $('#coupon').val();
        coupon_value = 0;
        if (coupon != '') {
            $.getJSON(
                '/order/coupon/?coupon='+coupon, 
                function(data) {
                    if (data['code']) {
                        data['value'] = data['value']*1.00;
                        msg = '';
                        if (data['value']) {
                            msg += 'Скидка на '+data['value']+' '+(data['type'] == 'fixed' ? 'у.е.' : '%');
                            if (data['type'] == 'fixed') {
                                coupon_value = data['value'];
                            } else {
                                coupon_value = subtotal*data['value']/100;
                            }
                            coupon_value = Math.round(100*coupon_value)/100;
                            if (data['notes']) {
                                msg += '<br/>';
                            }
                        }
                        if (data['notes']) {
                            msg += '<strong>'+data['notes']+'</strong>';
                        }
                        $('#coupon_info').html(msg);
                    } else {
                        $('#coupon_info').html(data['msgs'][0]);
                    }
                }
            );
        } else {
            $('#coupon_info').html('');
        }
    }
    total -= coupon_value;
    if (!(total > 0)) {
        total = '0.00';
    }
    total = Math.round(100*total)/100;
    
    $('#total').html(total);
}

function setupShadowbox() {
	 Shadowbox.setup("a.thickbox", {
	        gallery:        "mustang",
	        continuous:     true,
	        counterType:    "skip"
	 });


}

