var
Cart =
function
() {
this.
Count
= 0;
this.Total = 0;
this.Items =
new
Array();
};
var
CartItem =
function
() {
this.Id = 0;
this.Name =
""
;
this.
Count
= 0;
this.Price = 0;
};
var
CartHelper =
function
() {
this.cookieName =
"yxhCart"
;
this.Clear =
function
() {
var
cart =
new
Cart();
this.Save(cart);
return
cart;
};
this.Add =
function
(id, name,
count
, price) {
var
cart = this.Read();
var
index = this.Find(id);
if
(index > -1) {
cart.Total -= (((cart.Items[index].
Count
* 100) * (cart.Items[index].Price * 100)) / 10000);
cart.Items[index].
Count
=
count
;
cart.Total += (((cart.Items[index].
Count
* 100) * (cart.Items[index].Price * 100)) / 10000);
}
else
{
var
item =
new
CartItem();
item.Id = id;
item.Name = name;
item.
Count
=
count
;
item.Price = price;
cart.Items.push(item);
cart.
Count
++;
cart.Total += (((cart.Items[index].
Count
* 100) * (cart.Items[index].Price * 100)) / 10000);
}
this.Save(cart);
return
cart;
};
this.Change =
function
(id,
count
) {
var
cart = this.Read();
var
index = this.Find(id);
cart.Items[index].
Count
=
count
;
this.Save(cart);
return
cart;
};
this.Del =
function
(id) {
var
cart = this.Read();
var
index = this.Find(id);
if
(index > -1) {
var
item = cart.Items[index];
cart.
Count
--;
cart.Total = cart.Total - (((item.
Count
* 100) * (item.Price * 100)) / 10000);
cart.Items.splice(index, 1);
this.Save(cart);
}
return
cart;
};
this.Find =
function
(id) {
var
cart = this.Read();
var
index = -1;
for
(
var
i = 0; i < cart.Items.length; i++) {
if
(cart.Items[i].Id == id) {
index = i;
}
}
return
index;
};
this.Save =
function
(cart) {
var
source =
""
;
for
(
var
i = 0; i < cart.Items.length; i++) {
if
(source !=
""
) { source +=
"|$|"
; }
source += this.ItemToString(cart.Items[i]);
}
$.cookie(this.cookieName, source);
};
this.Read =
function
() {
var
source = $.cookie(this.cookieName);
var
cart =
new
Cart();
if
(source == null || source ==
""
) {
return
cart;
}
var
arr = source.split(
"|$|"
);
cart.
Count
= arr.length;
for
(
var
i = 0; i < arr.length; i++) {
var
item = this.ItemToObject(arr[i]);
cart.Items.push(item);
cart.Total += (((item.
Count
* 100) * (item.Price * 100)) / 10000);
}
return
cart;
};
this.ItemToString =
function
(item) {
return
item.Id +
"||"
+ escape(item.Name) +
"||"
+ item.
Count
+
"||"
+ item.Price;
};
this.ItemToObject =
function
(str) {
var
arr = str.split('||');
var
item =
new
CartItem();
item.Id = arr[0];
item.Name = unescape(arr[1]);
item.
Count
= arr[2];
item.Price = arr[3];
return
item;
};
};