$(document).ready(function () {
	// событие - клик по чекбоксу
    $('#order td.chk input').click(function () {
        var $tr = $(this).parent().parent();
        if (!$(this).attr('checked')) {
            $tr.find('td div').css('opacity', 0.3)
            $tr.find("td.count input").attr("oldvalue", $tr.find("td.count input").attr("value")).attr("value", 0);
            refresh_cart($tr.find("td.count input"));
        } else {
            $tr.find('td div').css('opacity', 1);
            var $oldvalue = $tr.find("td.count input").attr("oldvalue");
            $tr.find("td.count input").attr("value", ($oldvalue > 0 ? $oldvalue : 1));
            refresh_cart($tr.find("td.count input"));
        }
    });
	
	
	// событие - изменение количества
    $("#order td.count input").bind("keyup", function () {
        refresh_cart($(this));
    });
	
	
	// функция обновления корзины
    function refresh_cart($row) {
		// обновление ajax-корзины
		$("#cart").addClass('loading');
		$.get("/module.ajaxcart.php?", {id : $row.attr("cid"), count: $row.attr("value")} ,function (data) {
            $("#cart").replaceWith(data);
            $("#cart").removeClass('loading');
        });
		/*
		$.get("/module.ajaxpay.php?", null ,function (data) {
            $('input[name="data"]').attr("value", data);
        });	*/
		
		
        var $sum = $row.attr("price") * ($row.attr("value") > 0 ? $row.attr("value") : 0);
        $tr = $row.parent().parent();
        $tr.find("span.sum").html(number_format($sum, 2, '.', ' '));
		
        if ($sum > 0) {
            $tr.find("td div").css('opacity', 1);
            $tr.find("td.chk input").attr('checked', 'checked');
        } else {
            $tr.find("td div").css('opacity', 0.3)
            $tr.find("td.chk input").removeAttr("checked");
        }

        var $itogo = 0;
        $("#order td.count input").each(function () {
            $itogo = $itogo + $(this).attr("price") * ($(this).attr("value") > 0 ? $(this).attr("value") : 0);
        });
        $('span.itogo').html(number_format($itogo, 2, '.', ' '));
    }

	// функция форматирования чисел
	function number_format(number, decimals, dec_point, thousands_sep) {
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}	
	
	
	
	
	
	
	
	
	
	
	
	
	
	/*
    $("#cart .ca").hover(function () {
        $("#cart a").addClass("hover");
    }, function () {
        $("#cart a").removeClass("hover");
    });



    $('a.lb').click(function () {
        $('body').append('<div id="overlay"></div><div id="lb"><span><img src="' + $(this).attr('href') + '" /></span><del></del></div>');
        if ($("#images a").length > 1) {
            $('#lb').append('<a href="" class="prev">Предыдущая</a><a href="" class="next">Следущая</a>');
        }
        $('#overlay').css({
            opacity: 0
        }).animate({
            opacity: 0.9
        }, 400);
        var w = $(window);
        $('#lb span').css("width", w.width()).css("height", w.height());
        $('#lb').css("top", $(document).scrollTop());
        $('#lb img').css("max-width", w.width() - 120);
        return false;
    });

    $('#lb a.next').live('click', function () {
        var nextImg = $("#images a.active").next();
        if (nextImg.html() === null) nextImg = $("#images a").first();
        $('#lb img').attr("src", nextImg.attr("big"));
        $("#images a").removeClass("active");
        nextImg.addClass("active");
        $('#bimage img').attr('src', nextImg.attr('href')).parent().attr('href', $(this).attr('big'));
        var w = $(window);
        $('#lb span').css("width", w.width()).css("height", w.height());
        $('#lb').css("top", $(document).scrollTop());
        $('#lb img').css("max-width", w.width() - 120);
        return false;
    });
    $('#lb a.prev').live('click', function () {
        var prevImg = $("#images a.active").prev();
        if (prevImg.html() === null) prevImg = $("#images a").last();
        $('#lb img').attr("src", prevImg.attr("big"));
        $("#images a").removeClass("active");
        prevImg.addClass("active");
        $('#bimage img').attr('src', prevImg.attr('href')).parent().attr('href', $(this).attr('big'));
        var w = $(window);
        $('#lb span').css("width", w.width()).css("height", w.height());
        $('#lb').css("top", $(document).scrollTop());
        $('#lb img').css("max-width", w.width() - 120);
        return false;
    });
	
    
    if ($('div.grid div').size() > 40) dur = 0;*/
	/*
	// задаем переменные
	var dur = 500;	
    var $preferences = {
        adjustHeight: 'auto',
        duration: dur,
        useScaling: false
    };
	*/
	

	
	/*
    $('input[class!="button"]').attr('disabled', 0);
	
    $("#text form input").bind("keyup change click blur", function () {
        validate_order();
        validate_preorder_form();
        validate_quest_form();
    });
    validate_order();
    validate_preorder_form();
    validate_quest_form();
	*/
});


/*
jQuery.fn.fadeTo = function (speed, to, callback) {
    return this.animate({
        opacity: to
    }, speed, function () {
        if (to == 1 && jQuery.browser.msie) this.style.removeAttribute('filter');
        if (jQuery.isFunction(callback)) callback();
    });
};*/
/*
(function ($) {
    $.fn.sorted = function (customOptions) {
        var options = {
            reversed: false,
            by: function (a) {
                return a.text();
            }
        };
        $.extend(options, customOptions);
        $data = $(this);
        arr = $data.get();
        arr.sort(function (a, b) {
            var valA = options.by($(a));
            var valB = options.by($(b));
            if (options.reversed) {
                return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;
            } else {
                return (valA < valB) ? -1 : (valA > valB) ? 1 : 0;
            }
        });
        return $(arr);
    };
})(jQuery);
*/


/*
function x_cart_add($name, $id, $count) {
    $id = parseInt($id);
    $count = parseInt($count);
    $cart = new Array();
    if (getcookie($name) != null) {
        $cart = unserialize(getcookie($name));
    }
    if ($cart[$id] != null) {
        $cart[$id] = $cart[$id] + $count;
    } else {
        $cart[$id] = $count;
    }
    if (!($count > 0)) {
        delete $cart[$id];
    }
    setcookie($name, serialize($cart), time() + 60 * 60 * 24 * 7, "/");
}

function x_cart_set($name, $id, $count) {
    $id = parseInt($id);
    $count = parseInt($count);
    $cart = new Array();
    if (getcookie($name) != null) {
        $cart = unserialize(getcookie($name));
    }
    $cart[$id] = $count;
    if (!($count > 0)) {
        delete $cart[$id];
    }
    setcookie($name, serialize($cart), time() + 60 * 60 * 24 * 7, "/");
}

function x_cart_count(name) {
    var count = 0;
    if (getcookie(name) != null) {
        $.each(unserialize(getcookie(name)), function (n, val) {
            count = count + val;
        });
    }
    return count;
}

function x_cart($name) {
    if (getcookie($name) != null) return unserialize(getcookie($name));
}

function time() {
    return Math.floor(new Date().getTime() / 1000);
}

function getcookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) {
        return null;
    }
    if (start == -1) return null;
    var end = document.cookie.indexOf(';', len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len, end));
}

function setrawcookie(name, value, expires, path, domain, secure) {
    if (expires instanceof Date) {
        expires = expires.toGMTString();
    } else if (typeof (expires) == 'number') {
        expires = (new Date(+(new Date()) + expires * 1e3)).toGMTString();
    }
    var r = [name + "=" + value],
        s = {},
        i = '';
    s = {
        expires: expires,
        path: path,
        domain: domain
    };
    for (i in s) {
        s[i] && r.push(i + "=" + s[i]);
    }
    return secure && r.push("secure"), this.window.document.cookie = r.join(";"), true;
}

function setcookie(name, value, expires, path, domain, secure) {
    return this.setrawcookie(name, encodeURIComponent(value), expires, path, domain, secure);
}

function serialize(mixed_value) {
    var _getType = function (inp) {
            var type = typeof inp,
                match;
            var key;
            if (type == 'object' && !inp) {
                return 'null';
            }
            if (type == "object") {
                if (!inp.constructor) {
                    return 'object';
                }
                var cons = inp.constructor.toString();
                match = cons.match(/(\w+)\(/);
                if (match) {
                    cons = match[1].toLowerCase();
                }
                var types = ["boolean", "number", "string", "array"];
                for (key in types) {
                    if (cons == types[key]) {
                        type = types[key];
                        break;
                    }
                }
            }
            return type;
        };
    var type = _getType(mixed_value);
    var val, ktype = '';
    switch (type) {
    case "function":
        val = "";
        break;
    case "boolean":
        val = "b:" + (mixed_value ? "1" : "0");
        break;
    case "number":
        val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
        break;
    case "string":
        mixed_value = this.utf8_encode(mixed_value);
        val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
        break;
    case "array":
    case "object":
        val = "a";
        var count = 0;
        var vals = "";
        var okey;
        var key;
        for (key in mixed_value) {
            ktype = _getType(mixed_value[key]);
            if (ktype == "function") {
                continue;
            }
            okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
            vals += this.serialize(okey) + this.serialize(mixed_value[key]);
            count++;
        }
        val += ":" + count + ":{" + vals + "}";
        break;
    case "undefined":
    default:
        val = "N";
        break;
    }
    if (type != "object" && type != "array") {
        val += ";";
    }
    return val;
}

function unserialize(data) {
    var that = this;
    var utf8Overhead = function (chr) {
            var code = chr.charCodeAt(0);
            if (code < 0x0080) {
                return 0;
            }
            if (code < 0x0800) {
                return 1;
            }
            return 2;
        };
    var error = function (type, msg, filename, line) {
            throw new that.window[type](msg, filename, line);
        };
    var read_until = function (data, offset, stopchr) {
            var buf = [];
            var chr = data.slice(offset, offset + 1);
            var i = 2;
            while (chr != stopchr) {
                if ((i + offset) > data.length) {
                    error('Error', 'Invalid');
                }
                buf.push(chr);
                chr = data.slice(offset + (i - 1), offset + i);
                i += 1;
            }
            return [buf.length, buf.join('')];
        };
    var read_chrs = function (data, offset, length) {
            var buf;
            buf = [];
            for (var i = 0; i < length; i++) {
                var chr = data.slice(offset + (i - 1), offset + i);
                buf.push(chr);
                length -= utf8Overhead(chr);
            }
            return [buf.length, buf.join('')];
        };
    var _unserialize = function (data, offset) {
            var readdata;
            var readData;
            var chrs = 0;
            var ccount;
            var stringlength;
            var keyandchrs;
            var keys;
            if (!offset) {
                offset = 0;
            }
            var dtype = (data.slice(offset, offset + 1)).toLowerCase();
            var dataoffset = offset + 2;
            var typeconvert = function (x) {
                    return x;
                };
            switch (dtype) {
            case 'i':
                typeconvert = function (x) {
                    return parseInt(x, 10);
                };
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
                break;
            case 'b':
                typeconvert = function (x) {
                    return parseInt(x, 10) !== 0;
                };
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
                break;
            case 'd':
                typeconvert = function (x) {
                    return parseFloat(x);
                };
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
                break;
            case 'n':
                readdata = null;
                break;
            case 's':
                ccount = read_until(data, dataoffset, ':');
                chrs = ccount[0];
                stringlength = ccount[1];
                dataoffset += chrs + 2;
                readData = read_chrs(data, dataoffset + 1, parseInt(stringlength, 10));
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 2;
                if (chrs != parseInt(stringlength, 10) && chrs != readdata.length) {
                    error('SyntaxError', 'String length mismatch');
                }
                readdata = that.utf8_decode(readdata);
                break;
            case 'a':
                readdata = {};
                keyandchrs = read_until(data, dataoffset, ':');
                chrs = keyandchrs[0];
                keys = keyandchrs[1];
                dataoffset += chrs + 2;
                for (var i = 0; i < parseInt(keys, 10); i++) {
                    var kprops = _unserialize(data, dataoffset);
                    var kchrs = kprops[1];
                    var key = kprops[2];
                    dataoffset += kchrs;
                    var vprops = _unserialize(data, dataoffset);
                    var vchrs = vprops[1];
                    var value = vprops[2];
                    dataoffset += vchrs;
                    readdata[key] = value;
                }
                dataoffset += 1;
                break;
            default:
                error('SyntaxError', 'Unknown / Unhandled data type(s): ' + dtype);
                break;
            }
            return [dtype, dataoffset - offset, typeconvert(readdata)];
        };
    return _unserialize((data + ''), 0)[2];
}

function utf8_decode(str_data) {
    var tmp_arr = [],
        i = 0,
        ac = 0,
        c1 = 0,
        c2 = 0,
        c3 = 0;
    str_data += '';
    while (i < str_data.length) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if ((c1 > 191) && (c1 < 224)) {
            c2 = str_data.charCodeAt(i + 1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i + 1);
            c3 = str_data.charCodeAt(i + 2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
    return tmp_arr.join('');
}

function utf8_encode(argString) {
    var string = (argString + '');
    var utftext = "";
    var start, end;
    var stringl = 0;
    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;
        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n + 1;
        }
    }
    if (end > start) {
        utftext += string.substring(start, string.length);
    }
    return utftext;
}


*/
