// online.order.page.js.
var online_order_failure_fn;
var online_order_success_fn;
function change_country(country_id)
{
YUI().use
(
"datasource", "io-base", "json", "node", function(Y)
{
var success_fn = function(ioId, o)
{
var result_div;
if (o.responseText !== undefined)
{
Y.JSON.useNativeParse = false;
var data = Y.JSON.parse(o.responseText);
result_div = Y.one("#zone_menu");
result_div.set("innerHTML", data.menu);
}
else
{
result_div = Y.one("#order_message_div");
result_div.set("innerHTML", "The server's response is incomprehensible");
}
};
var failure_fn = function(ioId, o)
{
var result_div = Y.one("#order_message_div");
result_div.set("innerHTML", "The server failed to respond");
};
var cfg =
{
method: "POST",
on:
{
success: success_fn,
failure: failure_fn
},
sync: true
};
var request = Y.io("/Order/change_country?country_id=" + country_id, cfg);
}
);
}
function prepare_order_form()
{
YUI().use
(
"datasource-get", "datatable", "event-key", "gallery-formmgr", "io-base", "io-form", "json", "node", function(Y)
{
var f = new Y.FormManager("order_form",
{
});
f.prepareForm();
var handle = Y.on("key", function(e)
{
e.halt();
// The YUI docs for Event say to use this, but it stops the effect I want.
//handle.detach();
}, "#quantity", "press:13");
online_order_success_fn = function(ioId, o)
{
var result_div;
if (o.responseText !== undefined)
{
Y.JSON.useNativeParse = false;
var data = Y.JSON.parse(o.responseText);
switch (data.div_name)
{
case "order_result_div":
// Warning: This 'var result_div' line does not work if placed outside the function,
// in the sense that the 'result_div.set' line stops working in that case.
result_div = Y.one("#order_result_div");
result_div.set("innerHTML", "");
var cols =
[
{key: "name", label: "Name"},
{key: "price", label: "Unit price"},
{key: "quantity", label: "Quantity"},
{key: "total_price", label: "Cost"},
{key: "action", label: "Action"}
];
var table = new Y.DataTable.Base
({
columnset: cols,
recordset: data.content
}).render("#order_result_div");
result_div = Y.one("#order_message_div");
if (data.order_count > 0)
{
result_div.set("innerHTML", "<span class=\"red\">Starting a new order...</span>");
}
else
{
result_div.set("innerHTML", "");
}
break;
case "order_message_div":
result_div = Y.one("#order_message_div");
result_div.set("innerHTML", data.content);
if (data.clear_cart === "Yes")
{
result_div = Y.one("#order_result_div");
result_div.set("innerHTML", "");
}
}
}
else
{
result_div = Y.one("#order_message_div");
result_div.set("innerHTML", "The server's response is incomprehensible");
}
};
online_order_failure_fn = function(ioId, o)
{
var result_div = Y.one("#order_message_div");
result_div.set("innerHTML", "The server failed to respond");
};
Y.one("#reset").on("click", function()
{
f.populateForm();
});
var online_order_ajax_cfg =
{
form:
{
id: "order_form"
},
method: "POST",
on:
{
success: online_order_success_fn,
failure: online_order_failure_fn
},
sync: true
};
Y.one("#add_to_cart").on('click', function(e)
{
if (FIC_checkForm("order_form") == false)
{
return false;
}
var request = Y.io("/Order/add_to_cart", online_order_ajax_cfg);
});
Y.one("#cancel_order").on('click', function(e)
{
var request = Y.io("/Order/cancel_order", online_order_ajax_cfg);
});
Y.one("#checkout").on('click', function(e)
{
var request = Y.io("/Order/checkout", online_order_ajax_cfg);
});
}
);
}
function remove_item(order_id, item_id)
{
YUI().use
(
"io-base", "io-form", function(Y)
{
var online_order_ajax_cfg =
{
method: "POST",
on:
{
success: online_order_success_fn,
failure: online_order_failure_fn
},
sync: true
};
var request = Y.io("/Order/remove_from_cart?order_id=" + order_id + ";item_id=" + item_id, online_order_ajax_cfg);
}
);
}