var SERVER_BASEURL = 'https://menuserver.canname.nu';
var DATASTORE_BASEURL = 'https://menustore.canname.nu';
function ucFirst(str){
return str[0].toUpperCase() + str.slice(1);
}
function ucWords(str){
var pieces = str.split(" ");
for(var i = 0; i < pieces.length; i++){
var j = pieces[i][0].toUpperCase();
pieces[i] = j + pieces[i].substr(1);
}
return pieces.join(" ");
}
function titleCase(str){
return ucWords(str.toLowerCase);
}
function CpDialog(){
var basic_dialog = function(title, content, title_bg_color, content_bg_color, width, position, draggable, timeout, callback){
var outer_wrapper = document.createElement('div');
outer_wrapper.className = 'cp-dialog-outer-wrapper';
outer_wrapper.style.width = width || '300px';
outer_wrapper.style.position = 'fixed';
outer_wrapper.style.zIndex = '10001';
switch(position){
case 'center':
default:
outer_wrapper.style.top = '50%';
outer_wrapper.style.left = '50%';
outer_wrapper.style.transform = 'translate(-50%,-50%)';
}
var title_wrapper = document.createElement('div');
title_wrapper.style.padding = '20px';
title_wrapper.style.textAlign = 'center';
title_wrapper.style.background = title_bg_color || '#14723d73';
title_wrapper.style.fontSize = '20px';
title_wrapper.style.fontWeight = '600';
title_wrapper.appendChild(document.createTextNode(title));
title_wrapper.className = 'cp-title-wrapper';
var closer_wrapper = document.createElement('div');
closer_wrapper.style.position = 'absolute';
closer_wrapper.className = 'cp-closer-wrapper';
closer_wrapper.style.top = '0px';
closer_wrapper.style.right = '0px';
closer_wrapper.style.padding = '5px';
var close_link = document.createElement('a');
close_link.className = 'cp-close-link';
close_link.style.cursor = 'pointer';
close_link.style.fontSize = '20px';
close_link.style.color = '#000';
close_link.style.fontWeight = '600';
close_link.innerHTML = '×';
close_link.onclick = function(){
outer_wrapper.remove();
};
closer_wrapper.appendChild(close_link);
title_wrapper.appendChild(closer_wrapper);
outer_wrapper.appendChild(title_wrapper);
var content_wrapper = document.createElement('div');
content_wrapper.className = 'cp-content-wrapper';
content_wrapper.style.color = '#000';
content_wrapper.style.fontSize = '16px';
content_wrapper.style.background = content_bg_color || '#fff';
content_wrapper.style.padding = '20px';
content_wrapper.style.maxHeight = '450px !important';
content_wrapper.style.overflowY = 'auto';
content_wrapper.innerHTML = content;
outer_wrapper.appendChild(content_wrapper);
document.getElementsByTagName('body')[0].appendChild(outer_wrapper);
if(timeout){
setTimeout(function(){
outer_wrapper.remove();
}, timeout);
}
}
this.infoWindow = function(title, content, width, timeout, position, draggable){
basic_dialog(title, content, false, false, width, position, draggable, timeout);
}
this.errorWindow = function(title, content, width, position, draggable, timeout){
const title_bg_color = 'red';
basic_dialog(title, content, title_bg_color, false, width, position, draggable, timeout)
}
this.successWindow = function(title, content, timeout, width, position, draggable){
const title_bg_color = 'green';
basic_dialog(title, content, title_bg_color, false, width, position, draggable, timeout)
}
this.optionsWindow = function(title, caption, options, radios, callback, width, position, draggable){
var options_task_wrapper = document.createElement('div');
var caption_wrapper = document.createElement('div');
caption_wrapper.className = 'cp-dialog-row';
caption_wrapper.innerHTML = caption;
options_task_wrapper.appendChild(caption_wrapper);
var options_wrapper = document.createElement('div');
for(var i = 0; i < options.length; i++){
var option_wrapper = document.createElement('div');
option_wrapper.className = 'cp-dialog-option-wrapper';
if(radios){
var radio = document.createElement('input');
radio.type = 'radio';
radio.name = 'cp_dialog_radio';
radio.value = options[i].value;
radio.style.marginRight = '7px';
option_wrapper.appendChild(radio);
option_wrapper.appendChild(document.createTextNode(options[i].display));
options_wrapper.appendChild(option_wrapper)
}
else{
var checkbox = document.createElement('input');
checkbox.type = 'checkbox';
//checkbox.name = 'cp_dialog_checkbox[' + options[i].value.replace(/ /g, '_').toLowerCase() + ']';
checkbox.className = 'cp-dialog-checkbox';
if(options[i].checked){
checkbox.setAttribute('checked', 'checked');
}
checkbox.value = options[i].value;
checkbox.style.marginRight = '7px';
option_wrapper.appendChild(checkbox);
option_wrapper.appendChild(document.createTextNode(options[i].display));
options_wrapper.appendChild(option_wrapper);
}
}
options_task_wrapper.appendChild(options_wrapper);
var action_button_wrapper = document.createElement('div');
action_button_wrapper.className = 'cp-action-button-row';
var action_button = document.createElement('button');
action_button.className = 'cp-action_button';
action_button.id = 'cp_cmd_button';
action_button.innerHTML = 'Submit';
action_button_wrapper.appendChild(action_button);
options_task_wrapper.appendChild(action_button_wrapper);
basic_dialog(title, options_task_wrapper.innerHTML);
var btn = document.getElementById('cp_cmd_button');
btn.onclick = function(){
callback();
}
}
this.selectWindow = function(title, caption, selections, multiple, width, position, draggable){
var select_task_wrapper = document.createElement('div');
var prepped_selections = [];
if(typeof selections[0].value != 'undefined'){
prepped_selections = selections;
}
else{
for(var i = 0; i < selections.length; i++){
prepped_selections.push(new CpSelection(selections[i]));
}
}
var selections_select = document.createElement('select');
selections_select.id = 'cp_cmd_select';
if(multiple){
selections_select.multiple = true;
selections_select.style.height = '250px';
}
selections_select.style.width = '100%';
for(var j = 0; j < prepped_selections.length; j++){
var opt = document.createElement('option');
opt.value = prepped_selections[j].value;
opt.appendChild(document.createTextNode(prepped_selections[j].display));
selections_select.appendChild(opt)
}
var caption_div = document.createElement('div');
caption_div.className = 'cp-dialog-row';
caption_div.innerHTML = caption;
select_task_wrapper.appendChild(caption_div);
var select_div = document.createElement('div');
select_div.className = 'cp-dialog-row';
select_div.appendChild(selections_select);
select_task_wrapper.appendChild(select_div);
var action_button_wrapper = document.createElement('div');
action_button_wrapper.className = 'cp-action-button-row';
var action_button = document.createElement('button');
action_button.className = 'cp-action_button';
action_button.id = 'cp_cmd_button';
action_button.innerHTML = 'Submit';
action_button_wrapper.appendChild(action_button);
select_task_wrapper.appendChild(action_button_wrapper);
basic_dialog(title, select_task_wrapper.innerHTML);
}
}
function show_cp_spinner(text){
const spinner_outer_wrapper = document.createElement('div');
spinner_outer_wrapper.style.backgroundColor = '#fff';
spinner_outer_wrapper.style.border = '1px solid #14723d73';
spinner_outer_wrapper.style.borderRadius = '10px';
spinner_outer_wrapper.style.width = '250px';
spinner_outer_wrapper.height = '250px';
spinner_outer_wrapper.className = 'spinner-outer-wrapper';
const spinner_wrapper = document.createElement('div');
spinner_wrapper.style.textAlign = 'center';
spinner_wrapper.style.padding = '60px 85px';
spinner_outer_wrapper.appendChild(spinner_wrapper);
spinner_wrapper.innerHTML = '
';
const spinner_text_wrapper = document.createElement('div');
spinner_text_wrapper.style.padding = '10px 20px';
spinner_text_wrapper.style.textAlign = 'center';
spinner_text_wrapper.style.fontSize = '24px';
spinner_outer_wrapper.appendChild(spinner_text_wrapper);
spinner_text_wrapper.appendChild(document.createTextNode(text));
spinner_outer_wrapper.style.position = 'fixed';
spinner_outer_wrapper.style.zIndex = '10001';
spinner_outer_wrapper.style.top = '50%';
spinner_outer_wrapper.style.left = '50%';
spinner_outer_wrapper.style.transform = 'translate(-50%,-50%)';
document.getElementsByTagName('body')[0].appendChild(spinner_outer_wrapper);
}
function hide_cp_spinner(){
document.getElementsByClassName('spinner-outer-wrapper')[0].remove();
}
function CpSelection(display, value){
this.display = display;
this.value = value || display == 'Select' ? '' : display;
}
function CpOption(display, value, checked){
this.display = display;
this.value = value || display;
this.checked = checked;
}
function typeCheck(value) {
const return_value = Object.prototype.toString.call(value);
// we can also use regex to do this...
const type = return_value.substring(
return_value.indexOf(" ") + 1,
return_value.indexOf("]"));
return type.toLowerCase();
}
function cpInfowindow(title, message, timeout){
var dialog = new CpDialog();
dialog.infoWindow(title, message, false, timeout);
}
function cpSuccess(message, timeout, title){
var dialog = new CpDialog();
dialog.successWindow(title || 'Success', message, timeout);
}
function cpError(message, timeout, title){
var dialog = new CpDialog();
dialog.errorWindow(title || 'Error', message, timeout);
}
function cpChecklist(title, caption, options, callback){
var dialog = new CpDialog();
dialog.optionsWindow(title, caption, options, false, callback);
}
function clickback(){
alert('clicked');
}
//alert('ht')
var jjj = new CpDialog();
//jjj.infoWindow('Test window', 'This is a test infowindow');
//jjj.errorWindow('Test Error', 'An error has occured. Panic!');
//jjj.successWindow('Success', 'The settings were saved', 6000);
var selections = [];
var selection = new CpSelection('Select', '');
var selection2 = new CpSelection('Option1', 'option1');
selections.push(selection);
selections.push(selection2);
//jjj.selectWindow('select window', 'Select something below', selections, true);
//jjj.optionsWindow('Radio selection', 'Make a selection', selections, true);
//jjj.optionsWindow('Checkbox selections', 'Select all that apply:', selections, false, clickback);
//cpChecklist('Checkbox selections', 'Select all that apply:', selections, window.clickback);
//cpSuccess('This message will close in 6 seconds', 6000, 'Success');
//cpError('This is generated by cpError(msg);');document.getElementsByTagName('body')[0].style.overflowY = 'scroll';
var cannamenu_div = document.getElementById("cannamenu-div");
if(!cannamenu_div){
if(document.currentScript.closest("div")){
cannamenu_div = document.currentScript.closest("div");
//document.currentScript.closest("div").appendChild(document.createTextNode("Menu will appear in this parent div"));
}
else{
cannamenu_div = document.createElement('div');
cannamenu_div.id = 'cannamenu-div';
document.currentScript.parentNode.appendChild(cannamenu_div);
cannamenu_div = document.getElementById("cannamenu-div");
//document.getElementById("cannamenu-div").appendChild(document.createTextNode("Menu will appear here in this created div"));
}
}
function CpCart(){
this.cart = new CpCartObj();
this.dispensaryId = 'val-1452';
this.endpoint = 'https://menustore.canname.nu/api.php';
this.wireMenuPage = function(){
var add_buttons = document.getElementsByClassName('add-to-cart-button');
//alert(add_buttons.length);
for(var i = 0; i < add_buttons.length; i++){
add_buttons[i].addEventListener("click", add_to_cart_click);
}
var view_cart_buttons = document.getElementsByClassName('cp-view-cart');
for(var i = 0; i < view_cart_buttons.length; i++){
view_cart_buttons[i].addEventListener('click', view_cart_click);
}
thiss.update_counter();
}
var view_cart_click = function(){
var cart = thiss.checkoutCart();
var wrapper = document.getElementById('cannamenu-div');
var menu = document.getElementById('canna_menu');
wrapper.appendChild(cart);
wrapper.appendChild(thiss.checkoutLogin());
menu.style.display = 'none';
document.getElementById('cp_filter_home').style.display = 'none';
};
this.update_counter = function(){
const cart_json = localStorage.cart;
var counter_value = 0;
if(cart_json){
var cart = JSON.parse(cart_json);
//alert(Object.keys(cart.items).length);
for(var item in cart.items){
counter_value = counter_value + parseInt(cart.items[item].quantity);
}
}
document.getElementById('cp_cart_counter_display').innerHTML = counter_value;
}
var add_to_cart_click = function(button){
//console.log(button);
//alert(button.target.dataset.product_pos_id);
var quantity = button.target.closest('.price-wrapper').getElementsByClassName('add-to-cart-quantity')[0].value;
//var price_tier = button.target.closest('.price-wrapper').getElementsByClassName('tier-select')[0].value || button.target.closest('.price-wrapper').dataset.size_uom_price;
if('undefined' != typeof button.target.closest('.price-wrapper').getElementsByClassName('tier-select')[0]){
var price_tier = button.target.closest('.price-wrapper').getElementsByClassName('tier-select')[0].value;
}
else{
var price_tier = button.target.closest('.price-wrapper').dataset.size_uom_price;
}
var pos_id = button.target.dataset.product_pos_id;
var dispensary_hash = button.target.dataset.dispensary_id;
var thumb_url = button.target.dataset.thumb_url;
var name = button.target.dataset.item_name;
const part_cat_id = button.target.dataset.part_category_id;
const tax_cat_id = button.target.dataset.tax_category_id;
const vendor_payee_id = button.target.dataset.vendor_payee_id;
const uom_id = button.target.dataset.uom_id;
const cat_name = button.target.dataset.cat_name;
const subcategory_name = button.target.dataset.subcategory_name;
//alert(price_tier);
var item_parts = price_tier.split(':');
var item = new CpCartItem(quantity, item_parts[0], item_parts[1], item_parts[2], pos_id, thumb_url, name, part_cat_id, tax_cat_id, vendor_payee_id, uom_id, cat_name, subcategory_name);
var item_key = pos_id + '-' + item_parts[0] + '-' + item_parts[1];
var current_cart = thiss.getCart();
if(null === current_cart){
// there is no cart
thiss.startCart(dispensary_hash, item);
}
else if(thiss.cart.dispensaryHash != dispensary_hash){
//alert(thiss.cart.dispensaryHash + "\n" + dispensary_hash);
if(confirm('Changing dispensaries will cause your current shopping cart to be deleted. Click OK to proceed')){
thiss.startCart(dispensary_hash, item);
}
}
else if(false === current_cart){
// A cart with no items
thiss.cart.items = {};
thiss.cart.items[item_key] = item;
}
else{
// cart with items
if(typeof thiss.cart.items[item_key] != 'undefined'){
// cart with the same item
thiss.cart.items[item_key].quantity = parseInt(thiss.cart.items[item_key].quantity) + parseInt(quantity);
}
else{
// Adding a new item
thiss.cart.items[item_key] = item;
}
}
thiss.storeCart();
thiss.update_counter();
}
this.startCart = function(disp_hash, item){
thiss.cart = new CpCartObj();
thiss.cart.dispensaryHash = disp_hash;
thiss.cart.items = {};
thiss.cart.items[item.posProductId + '-' + item.size] = item;
}
this.getCart = function(){
var json_cart = localStorage.getItem('cart');
if(!json_cart){
return null;
}
var rawcart = JSON.parse(json_cart);
if(typeof rawcart.items != 'undefined'){
thiss.cart = new CpCartObj(rawcart.dispensaryHash, rawcart.items);
return true;
}
return false;
}
this.getTax = async function(){
this.getCart();
const fd = new FormData();
fd.append('action', 'GetTax');
fd_append('cart', JSON.stringify(thiss.cart));
var resp = await fetch('https://menustore.canname.nu/api.php', {method: 'POST', body: fd});
const result = await resp.json();
if(result.totalTax == 0){
return false;
}
thiss.cart.taxTotal = result.totalTax;
}
this.storeCart = function(forget_preview){
localStorage.setItem('cart', JSON.stringify(thiss.cart));
if(!forget_preview)
thiss.previewCart();
}
this.previewCart = function(){
var preview_wrapper = document.createElement('div');
preview_wrapper.className = 'preview-wrapper';
preview_wrapper.style.position = 'fixed';
preview_wrapper.style.maxWidth = '500px';
preview_wrapper.style.top = '0px';
preview_wrapper.style.right = '0px';
preview_wrapper.style.display = 'none';
preview_wrapper.style.background = '#fff';
preview_wrapper.style.zIndex = '10000000';
const exit_div = document.createElement('div');
exit_div.style.width = '100%';
exit_div.style.textAlign = 'right';
exit_div.style.padding = '15px';
const close_link = document.createElement('a');
close_link.style.cursor = 'pointer';
close_link.style.fontSize = '18px';
close_link.innerHTML = '×';
close_link.onclick = function(){
const pr = document.getElementsByClassName('preview-wrapper')[0];
pr.style.display = 'none';
document.getElementsByTagName('body')[0].removeChild(pr);
}
exit_div.appendChild(close_link);
preview_wrapper.appendChild(exit_div);
var h2 = document.createElement('h2');
h2.appendChild(document.createTextNode('Your Order'));
preview_wrapper.appendChild(h2);
var taxless_total = 0;
var cart_table = document.createElement('table');
cart_table.style.width = '100%';
for(const item in thiss.cart.items){
if(item.indexOf('-') != -1){
var parts = item.split('-');
var baseitem = parts[0];
}
else{
var baseitem = item
}
var tr = document.createElement('tr');
var img_td = document.createElement('td');
img_td.style.width = '85px';
img_td.style.padding = '5px';
var thumb = document.createElement('img');
thumb.style.width = '75px';
thumb.src = thiss.cart.items[item].thumbUrl;
thumb.dataset.cat_name = thiss.cart.items[item].cat_name;
thumb.dataset.subcategory_name = thiss.cart.items[item].subcategory_name;
thumb.onerror = function(){
this.onerror = null;
if('' != this.dataset.subcategory_name){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.subcategory_name.toLowerCase() + '_default.jpg';
}
else if('' != this.dataset.cat_name){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.cat_name.toLowerCase() + '_default.jpg';
}
else{
this.src = 'https://menuserver.canname.nu/default.jpg';
}
this.onerror = function(){
this.onerror = null;
this.src = 'https://menuserver.canname.nu/default.jpg';
}
this.style.height = '75px';
this.style.border = '1pt solid #ccc';
};
img_td.appendChild(thumb);
tr.appendChild(img_td);
var name_td = document.createElement('td');
name_td.style.padding = '5px';
name_td.appendChild(document.createTextNode(thiss.cart.items[item].itemName));
tr.appendChild(name_td);
var quantity_td = document.createElement('td');
quantity_td.style.width = '40px';
quantity_td.style.padding = '5px';
quantity_td.style.textAlign = 'right';
quantity_td.appendChild(document.createTextNode(thiss.cart.items[item].quantity));
tr.appendChild(quantity_td);
var line_total_td = document.createElement('td');
line_total_td.style.width = '100px';
line_total_td.style.padding = '5px';
line_total_td.style.textAlign = 'right';
var line_total = parseInt(thiss.cart.items[item].quantity) * parseFloat(thiss.cart.items[item].unitPrice);
taxless_total = line_total + taxless_total;
//alert(line_total + ' - ' + taxless_total);
line_total_td.appendChild(document.createTextNode('$' + line_total.toFixed(2)));
tr.appendChild(line_total_td);
cart_table.appendChild(tr);
}
const tax_tr = document.createElement('tr');
tax_tr.appendChild(document.createElement('td'));
tax_tr.appendChild(document.createElement('td'));
const tax_label_td = document.createElement('td');
tax_label_td.padding = '5px';
tax_label_td.textAlign = 'right';
tax_label_td.appendChild(document.createTextNode('Est. tax'));
tax_tr.appendChild(tax_label_td);
const tax_amount_td = document.createElement('td');
tax_amount_td.style.padding = '5px';
tax_amount_td.style.textAlign = 'right';
var cart_total = 0;
if('0' == sessionStorage.est_tax_rate){
tax_amount_td.appendChild(document.createTextNode('Included'));
cart_total = taxless_total;
}
else{
var tax_total = parseFloat(taxless_total) * parseFloat(sessionStorage.est_tax_rate);
tax_amount_td.appendChild(document.createTextNode(tax_total.toFixed(2)));
cart_total = parseFloat(taxless_total) + tax_total;
}
tax_tr.appendChild(tax_amount_td);
cart_table.appendChild(tax_tr);
var total_tr = document.createElement('tr');
total_tr.appendChild(document.createElement('td'));
total_tr.appendChild(document.createElement('td'));
var total_label_td = document.createElement('td');
total_label_td.style.padding = '5px';
total_label_td.style.textAlign = 'right';
total_label_td.appendChild(document.createTextNode('Total'));
total_tr.appendChild(total_label_td);
var total_td = document.createElement('td');
total_td.style.padding = '5px';
total_td.style.textAlign = 'right';
total_td.appendChild(document.createTextNode('$' + cart_total.toFixed(2)));
total_tr.appendChild(total_td);
cart_table.appendChild(total_tr);
preview_wrapper.appendChild(cart_table);
document.getElementsByTagName('body')[0].appendChild(preview_wrapper);
preview_wrapper.style.display = 'block';
setTimeout(function(){
preview_wrapper.style.display = 'none';
document.getElementsByTagName('body')[0].removeChild(preview_wrapper);
}, 3000);
}
this.checkoutLogin = function(){
var checkout_div = document.createElement('div');
checkout_div.style.padding = '20px';
checkout_div.id = 'checkout_div';
checkout_div.style.textAlign = 'center';
var checkout_button = document.createElement('button');
checkout_button.id = 'checkout_button';
checkout_button.appendChild(document.createTextNode('Checkout'));
checkout_button.onclick = function(e){
e.preventDefault();
if(!getCpid()){
document.getElementById('cart_div').style.display = 'none';
document.getElementById('auth_div').style.display = 'block';
document.getElementById('checkout_div').style.display = 'none';
}
else{
document.getElementById('cart_div').style.display = 'block';
document.getElementById('auth_div').style.display = 'none';
document.getElementById('checkout_div').style.display = 'none';
document.getElementById('customer_order').style.display = 'block';
}
}
checkout_div.appendChild(checkout_button);
var auth_div = document.createElement('div');
auth_div.id = 'auth_div';
auth_div.style.display = 'none';
var login_div = document.createElement('div');
login_div.id = 'login_div';
var login_h3 = document.createElement('h3');
login_h3.appendChild(document.createTextNode('Login'));
login_div.appendChild(login_h3);
var need_account = document.createElement('div');
need_account.appendChild(document.createTextNode('No Account? Signup '));
var need_account_link = document.createElement('a');
need_account_link.id = 'need_account_link';
need_account_link.style.cursor = 'pointer';
need_account_link.appendChild(document.createTextNode('HERE'));
need_account_link.onclick = function(){
login_div.style.display = 'none';
signup_div.style.display = 'block';
}
need_account.appendChild(need_account_link);
login_div.appendChild(need_account);
var uname_wrapper = document.createElement('div');
uname_wrapper.style.padding = '20px';
uname_wrapper.appendChild(document.createTextNode('Email Address'));
uname_wrapper.appendChild(document.createElement('br'));
var email_input = document.createElement('input');
email_input.id = 'login_email';
uname_wrapper.appendChild(email_input);
login_div.appendChild(uname_wrapper);
var pw_wrapper = document.createElement('div');
pw_wrapper.style.padding = '20px';
pw_wrapper.appendChild(document.createTextNode('Password'));
pw_wrapper.appendChild(document.createElement('br'));
var pw_input = document.createElement('input');
pw_input.type = 'password';
pw_input.id = 'login_pw';
pw_wrapper.appendChild(pw_input);
login_div.appendChild(pw_wrapper);
var login_button_wrapper = document.createElement('div');
login_button_wrapper.style.padding = '20px';
login_button_wrapper.style.textAlign = 'center';
const login_error_display = document.createElement('div');
login_error_display.style.color = 'red';
login_error_display.style.textAlign = 'center';
login_error_display.style.display = 'none';
login_button_wrapper.appendChild(login_error_display);
var login_button = document.createElement('button');
login_button.className = 'action-button';
login_button.id = 'login_button';
login_button.onclick = async function(){
const signin_name = document.getElementById('login_email');
if(!signin_name.value.length){
signin_name.style.borderColor = 'red';
login_error_display.innerHTML = 'Email is required';
login_error_display.style.display = 'block';
signin_name.focus();
return false;
}
else{
signin_name.style.borderColor = '#ccc';
login_error_display.style.display = 'none';
}
const signin_pw = document.getElementById('login_pw');
if(!signin_pw.value.length){
signin_pw.style.borderColor = 'red';
login_error_display.innerHTML = 'Password is required';
login_error_display.style.display = 'block';
signin_pw.focus();
return false;
}
else{
signin_pw.style.borderColor = '#ccc';
login_error_display.style.display = 'none';
}
const fd = new FormData();
fd.append('action', 'LoginCustomer');
fd.append('email', signin_name.value);
fd.append('pw', signin_pw.value);
fd.append('dispensary_hash', sessionStorage.disp_hash);
var resp = await fetch('https://menustore.canname.nu/api.php', {method: 'POST', body: fd});
const result = await resp.json();
if(result.status == 'ok'){
document.cookie = 'cpid=' + result.message;
document.getElementById('auth_div').style.display = 'none';
document.getElementById('cart_div').style.display = 'block';
document.getElementById('customer_order').style.display = 'block';
}
else{
login_error_display.innerHTML = result.message
login_error_display.style.display = 'block';
}
}
login_button.appendChild(document.createTextNode('Log In'));
login_button_wrapper.appendChild(login_button);
login_div.appendChild(login_button_wrapper);
auth_div.appendChild(login_div);
var signup_div = document.createElement('div');
signup_div.style.display = 'none';
signup_div.id = 'signup_div';
var signup_h3 = document.createElement('h3');
signup_h3.appendChild(document.createTextNode('Signup'));
signup_div.appendChild(signup_h3);
var have_account = document.createElement('div');
have_account.appendChild(document.createTextNode('Already Have an Account? Login '));
var have_account_link = document.createElement('a');
have_account_link.id = 'have_account_link';
have_account_link.style.cursor = 'pointer';
have_account_link.appendChild(document.createTextNode('HERE'));
have_account_link.onclick = function(){
login_div.style.display = 'block';
signup_div.style.display = 'none';
};
have_account.appendChild(have_account_link);
signup_div.appendChild(have_account);
var firstname_wrapper = document.createElement('div');
firstname_wrapper.style.padding = '20px';
firstname_wrapper.appendChild(document.createTextNode('First Name'));
firstname_wrapper.appendChild(document.createElement('br'));
var signup_firstname = document.createElement('input');
signup_firstname.id = 'signup_firstname';
firstname_wrapper.appendChild(signup_firstname);
signup_div.appendChild(firstname_wrapper);
var lastname_wrapper = document.createElement('div');
lastname_wrapper.style.padding = '20px';
lastname_wrapper.appendChild(document.createTextNode('Last Name'));
lastname_wrapper.appendChild(document.createElement('br'));
var signup_lastname = document.createElement('input');
signup_lastname.id = 'signup_lastname';
lastname_wrapper.appendChild(signup_lastname);
signup_div.appendChild(lastname_wrapper);
var email_wrapper = document.createElement('div');
email_wrapper.style.padding = '20px';
email_wrapper.appendChild(document.createTextNode('Email'));
email_wrapper.appendChild(document.createElement('br'));
var signup_email = document.createElement('input');
signup_email.id = 'signup_email';
email_wrapper.appendChild(signup_email);
signup_div.appendChild(email_wrapper);
var phone_wrapper = document.createElement('div');
phone_wrapper.style.padding = '20px';
phone_wrapper.appendChild(document.createTextNode('Phone'));
phone_wrapper.appendChild(document.createElement('br'));
var signup_phone = document.createElement('input');
signup_phone.id = 'signup_phone';
phone_wrapper.appendChild(signup_phone);
signup_div.appendChild(phone_wrapper);
var pw_wrapper = document.createElement('div');
pw_wrapper.style.padding = '20px';
pw_wrapper.appendChild(document.createTextNode('Password - At least 8 characters including at least 1 number and 1 upper case letter'));
pw_wrapper.appendChild(document.createElement('br'));
var signup_pw = document.createElement('input');
signup_pw.type = 'password';
signup_pw.id = 'signup_pw';
pw_wrapper.appendChild(signup_pw);
signup_div.appendChild(pw_wrapper);
var pw_confirm_wrapper = document.createElement('div');
pw_confirm_wrapper.style.padding = '20px';
pw_confirm_wrapper.appendChild(document.createTextNode('Confirm Password'));
pw_confirm_wrapper.appendChild(document.createElement('br'));
var signup_confirm_pw = document.createElement('input');
signup_confirm_pw.type = 'password';
signup_confirm_pw.id = 'signup_confirm_pw';
pw_confirm_wrapper.appendChild(signup_confirm_pw);
signup_div.appendChild(pw_confirm_wrapper);
var signup_button_wrapper = document.createElement('div');
signup_button_wrapper.style.textAlign = 'center';
var signup_button = document.createElement('button');
signup_button.id = 'signup_button';
signup_button.appendChild(document.createTextNode('Sign Up'));
signup_button.onclick = async function(){
const error_display = document.getElementById('cp_error_div');
const firstname = document.getElementById('signup_firstname');
firstname.style.borderColor = !firstname.value.length ? 'red' : '#ccc';
if(!firstname.value.length){
firstname.style.borderColor = 'red';
error_display.innerHTML = 'First name is required';
error_display.style.display = 'block';
firstname.focus();
return false;
}
else{
firstname.style.borderColor = '#ccc';
error_display.style.display = 'none';
}
const lastname = document.getElementById('signup_lastname');
if(!lastname.value.length){
lastname.style.borderColor = 'red';
error_display.innerHTML = 'Last name is required';
error_display.style.display = 'block';
lastname.focus();
return false;
}
else{
lastname.style.borderColor = '#ccc';
error_display.style.display = 'none';
}
const phone = document.getElementById('signup_phone');
if(!phone.value.length){
phone.style.borderColor = 'red';
error_display.innerHTML = 'Phone is required';
error_display.style.display = 'block';
phone.focus();
return false;
}
else{
phone.style.borderColor = '#ccc';
error_display.style.display = 'none';
}
const email = document.getElementById('signup_email');
if(!email.value.match(/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i)){
email.style.borderColor = 'red';
error_display.innerHTML = 'Valid email is required';
error_display.style.display = 'block';
email.focus();
return false;
}
else{
email.style.borderColor = '#ccc';
error_display.style.display = 'none';
}
const pw = document.getElementById('signup_pw');
if(!pw.value.match(/^(?=.*\d)(?=.*[A-Z]).{8,}$/)){
pw.style.borderColor = 'red';
error_display.innerHTML = 'Password does not meet requirements';
error_display.style.display = 'block';
pw.focus();
return false;
}
else{
pw.style.borderColor = '#ccc';
error_display.style.display = 'none';
}
const confirm_pw = document.getElementById('signup_confirm_pw');
if(confirm_pw.value != pw.value){
confirm_pw.style.borderColor = 'red';
error_display.innerHTML = 'Passwords do not match';
error_display.style.display = 'block';
confirm_pw.focus();
return false;
}
else{
confirm_pw.style.borderColor = '#ccc';
error_display.style.display = 'none';
}
const fd = new FormData();
fd.append('action', 'CreateCustomer');
fd.append('first_name', document.getElementById('signup_firstname').value);
fd.append('last_name', document.getElementById('signup_lastname').value);
fd.append('email', document.getElementById('signup_email').value);
fd.append('phone', document.getElementById('signup_phone').value);
fd.append('password', document.getElementById('signup_pw').value);
fd.append('dispensary_hash', sessionStorage.disp_hash);
var resp = await fetch('https://menustore.canname.nu/api.php', {method: 'POST', body: fd});
const result = await resp.json();
if(result.status == 'ok'){
document.cookie = 'cpid=' + result.message;
document.getElementById('auth_div').style.display = 'none';
document.getElementById('cart_div').style.display = 'block';
document.getElementById('customer_order').style.display = 'block';
}
else{
error_display.innerHTML = result.message
error_display.style.display = 'block';
}
}
const error_div = document.createElement('div');
error_div.style.textAlign = 'center';
error_div.id = 'cp_error_div';
error_div.style.color = 'red';
error_div.style.display = 'none';signup_button_wrapper.appendChild(error_div);
signup_button_wrapper.appendChild(signup_button);
signup_div.appendChild(signup_button_wrapper);
auth_div.appendChild(signup_div);
const action_div = document.createElement('div');
action_div.appendChild(checkout_div);
action_div.appendChild(auth_div);
const customer_order_div = document.createElement('div');
customer_order_div.id = 'customer_order';
const order_button_div = document.createElement('div');
//order_button_div.style.textAlign = 'center';
order_button_div.style.maxWidth = '390px';
//order_button_div.style.margin = '0 auto';
order_button_div.style.paddingLeft = '8px';
order_button_div.className = 'cp-form-row';
const order_button = document.createElement('button');
order_button.id = 'cp_order_button';
order_button.innerHTML = 'Place Order';
order_button_div.appendChild(order_button);
order_button.onclick = async function(){
show_cp_spinner('Sending your order...');
const fd = new FormData();
fd.append('action', 'PlaceOrder');
fd.append('customer_id', getCpid());
fd.append('store_id', adilas_store_id);
const decoded_cart = JSON.parse(localStorage.cart);
//alert(decoded_cart);
fd.append('items', JSON.stringify(decoded_cart.items));
fd.append('dispensary_hash', decoded_cart.dispensaryHash);
var resp = await fetch('https://menustore.canname.nu/api.php', {method: 'POST', body: fd});
const result = await resp.json();
hide_cp_spinner();
if(result.status == 'success'){
document.getElementById('tax_label_td').innerHTML = 'Tax';
document.getElementById('cart_tax_amount_td').innerHTML = '$' + result.tax;
document.getElementById('cart_total_td').innerHTML = '$' + result.total;
cpInfowindow('Order Placed', 'Thank you for your order!
Your request was successfully received.
Please note that orders may only be fulfilled during business hours (if submitted after hours, your order will sit in a queue until the store opens). Questions or Concerns? Please contact the store for assistance.
', false);
localStorage.removeItem('cart');
document.getElementById('cp_cart_counter_display').innerHTML = '0';
document.getElementById('cp_order_button').remove();
var continue_link = document.getElementById('continue_shopping_link');
continue_link.innerHTML = 'Back to Store';
continue_link.onclick = function(){
window.location.reload();
}
document.getElementById('update_button').remove();
}
}
customer_order_div.appendChild(order_button_div);
if(getCpid()){
auth_div.style.display = 'none';
checkout_div.style.display = 'none';
customer_order_div.style.display = 'block';
}
else{
auth_div.style.display = 'none';
customer_order_div.style.display = 'none';
}
action_div.appendChild(auth_div);
action_div.appendChild(customer_order_div);
return action_div;
}
this.checkoutCart = function(){
var cart_div = document.createElement('div');
cart_div.id = 'cart_div';
var continue_shopping_link = document.createElement('a');
continue_shopping_link.style.cursor = 'pointer';
continue_shopping_link.id = 'continue_shopping_link';
continue_shopping_link.appendChild(document.createTextNode('Continue Shopping'));
continue_shopping_link.onclick = function(){
cart_div.remove();
if(document.getElementById('auth_div')){
document.getElementById('auth_div').remove();
}
if(document.getElementById('cp_order_button')){
document.getElementById('cp_order_button').remove();
}
if(document.getElementById('checkout_div')){
document.getElementById('checkout_div').remove();
}
if(document.getElementById('checkout_button')){
document.getElementById('checkout_button').remove();
}
if(document.getElementById('customer_order')){
document.getElementById('customer_order').remove();
}
document.getElementById('canna_menu').style.display = 'block';
document.getElementById('cp_filter_home').style.display = 'block';
}
//cart_div.appendChild(continue_shopping_link);
var taxless_total = 0;
var cart_table = document.createElement('table');
cart_table.className = 'cart-table';
cart_table.style.width = '100%';
thiss.getCart();
for(const item in thiss.cart.items){
if(item.indexOf('-') != -1){
var parts = item.split('-');
var baseitem = parts[0];
}
else{
var baseitem = item;
}
var tr = document.createElement('tr');
tr.className = 'item';
var img_td = document.createElement('td');
img_td.style.width = '85px';
img_td.style.padding = '5px';
var thumb = document.createElement('img');
thumb.style.width = '75px';
thumb.src = thiss.cart.items[item].thumbUrl;
//console.log(thiss.cart.items[item]);
thumb.dataset.cat_name = thiss.cart.items[item].cat_name;
thumb.dataset.subcategory_name = thiss.cart.items[item].subcategory_name;
thumb.onerror = function(){
this.onerror = null;
if('' != this.dataset.subcategory_name){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.subcategory_name.toLowerCase() + '_default.jpg';
}
else if('' != this.dataset.cat_name){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.cat_name.toLowerCase() + '_default.jpg';
}
else{
this.src = 'https://menuserver.canname.nu/default.jpg';
}
this.onerror = function(){
this.onerror = null;
this.src = 'https://menuserver.canname.nu/default.jpg';
}
this.style.height = '75px';
this.style.border = '1pt solid #ccc';
};
img_td.appendChild(thumb);
tr.appendChild(img_td);
var name_td = document.createElement('td');
name_td.style.padding = '5px';
name_td.style.fontSize = '90%';
name_td.appendChild(document.createTextNode(thiss.cart.items[item].itemName + ' ' + thiss.cart.items[item].size + thiss.cart.items[item].uom));
tr.appendChild(name_td);
var quantity_td = document.createElement('td');
//quantity_td.style.width = '40px';
quantity_td.style.padding = '5px';
quantity_td.style.textAlign = 'right';
var delete_span = document.createElement('span');
delete_span.style.color = 'red';
delete_span.style.fontWeight = '700';
var delete_link = document.createElement('a');
delete_link.style.textDecoration = 'none';
delete_link.style.fontSize = 'small';
delete_link.style.cursor = 'pointer';
delete_link.appendChild(document.createTextNode('Remove'));
delete_link.onclick = function(){
delete thiss.cart.items[item];
thiss.storeCart(true);
//this.closest('.item').remove();
var main_div = document.getElementById('cannamenu-div');
cart_div.remove();
if(document.getElementById('auth_div')){
document.getElementById('auth_div').remove();
}
if(document.getElementById('customer_order')){
document.getElementById('customer_order').remove();
}
if(document.getElementById('checkout_button')){
document.getElementById('checkout_button').remove();
}
main_div.appendChild(thiss.checkoutCart());
main_div.appendChild(thiss.checkoutLogin());
thiss.update_counter();
}
delete_span.appendChild(delete_link);
quantity_td.appendChild(delete_span);
quantity_td.appendChild(document.createElement('br'));
var quantity_input = document.createElement('input');
quantity_input.type = 'number';
quantity_input.min = 1;
quantity_input.max = 5;
quantity_input.style.width = '80px';
quantity_input.value = thiss.cart.items[item].quantity;
quantity_input.oninput = function(){
if(this.value < 1){
this.value = 1;
}
}
quantity_input.onchange = function(){
if(this.value < 1){
this.value = 1;
}
thiss.cart.items[item].quantity = this.value;
thiss.storeCart(true);
thiss.update_counter();
}
quantity_td.appendChild(quantity_input);
tr.appendChild(quantity_td);
var line_total_td = document.createElement('td');
//line_total_td.style.width = '100px';
line_total_td.style.padding = '5px';
line_total_td.style.textAlign = 'right';
var line_total = parseInt(thiss.cart.items[item].quantity) * parseFloat(thiss.cart.items[item].unitPrice);
taxless_total = line_total + taxless_total;
//alert(line_total + ' - ' + taxless_total);
line_total_td.appendChild(document.createTextNode('$' + line_total.toFixed(2)));
tr.appendChild(line_total_td);
cart_table.appendChild(tr);
}
const tax_tr = document.createElement('tr');
tax_tr.appendChild(document.createElement('td'));
tax_tr.appendChild(document.createElement('td'));
const tax_label_td = document.createElement('td');
tax_label_td.id = 'tax_label_td';
tax_label_td.style.padding = '5px';
tax_label_td.style.textAlign = 'right';
tax_label_td.appendChild(document.createTextNode('Est. tax'));
tax_tr.appendChild(tax_label_td);
var tax_amount = 0;
const tax_amount_td = document.createElement('td');
tax_amount_td.id = 'cart_tax_amount_td';
tax_amount_td.style.padding = '5px';
tax_amount_td.style.textAlign = 'right';
var cart_total = 0;
if(sessionStorage.est_tax_rate == 0){
tax_amount_td.appendChild(document.createTextNode('Included'));
cart_total = taxless_total;
}
else{
tax_amount = parseFloat(taxless_total) * parseFloat(sessionStorage.est_tax_rate);
tax_amount_td.appendChild(document.createTextNode('$' + tax_amount.toFixed(2)));
cart_total = taxless_total + tax_amount;
}
tax_tr.appendChild(tax_amount_td);
cart_table.appendChild(tax_tr);
var total_tr = document.createElement('tr');
var update_td = document.createElement('td');
update_td.colSpan = 2;
var update_button = document.createElement('button');
update_button.appendChild(document.createTextNode("Update\nCart"));
update_button.id = 'update_button';
update_button.onclick = function(){
var main_div = document.getElementById('cannamenu-div');
cart_div.remove();
//document.getElementById('checkout_button').remove();
if(document.getElementById('auth_div')){
//document.getElementById('auth_div').remove();
}
if(document.getElementById('checkout_button')){
document.getElementById('checkout_div').style.display = 'none';
}
//document.getElementById('customer_order').remove();
//document.getElementById('auth_div').remove();
main_div.prepend(thiss.checkoutCart());
//main_div.appendChild(thiss.checkoutLogin());
if(document.getElementById('checkout_button')){
document.getElementById('checkout_div').style.display = 'block';
}
}
update_td.appendChild(update_button);
total_tr.appendChild(update_td);
//total_tr.appendChild(document.createElement('td'));
var total_label_td = document.createElement('td');
total_label_td.style.padding = '5px';
total_label_td.style.textAlign = 'right';
total_label_td.appendChild(document.createTextNode('Total'));
total_tr.appendChild(total_label_td);
var total_td = document.createElement('td');
total_td.id = 'cart_total_td';
total_td.style.padding = '5px';
total_td.style.textAlign = 'right';
total_td.appendChild(document.createTextNode('$' + cart_total.toFixed(2)));
total_tr.appendChild(total_td);
cart_table.appendChild(total_tr);
cart_div.appendChild(cart_table);
cart_div.appendChild(continue_shopping_link);
return cart_div;
}
var thiss = this;
}
function CpCartObj(disp_hash, items){
this.dispensaryHash = disp_hash;
this.items = items;
this.taxTotal = false;
}
function CpCartItem(quantity, size, uom, price, posPid, thumbUrl, itemName, part_cat_id, tax_cat_id, vendor_payee_id, uom_id, cat_name, subcategory_name){
this.quantity = quantity;
this.size = size;
this.uom = uom;
this.unitPrice = price;
this.posProductId = posPid;
this.thumbUrl = thumbUrl;
this.itemName = itemName;
this.taxCategoryId = tax_cat_id;
this.partCategoryId = part_cat_id;
this.vendorPayeeId = vendor_payee_id;
this.uomId = uom_id;
this.cat_name = cat_name;
this.subcategory_name = subcategory_name;
}
function getCpid() {
var name = "cpid=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i 0){
if(pricing_model.length === 1){
// simple single price
var price = parseFloat(pricing_model[0].price);
if(slider_price < price){
continue;
}
}
else{
// tiered priciing
var matches_price = false;
for(var p = 0; p < pricing_model.length; p++){
if(slider_price >= parseFloat(pricing_model[p].price)){
matches_price = true;
break;
}
}
if(!matches_price){
continue;
}
}
}
else{
continue;
}
}
else{
continue;
}
if(typeof resultant_menu[category] == 'undefined'){
resultant_menu[category] = [];
}
resultant_menu[category].push(cat_menu[category][i]);
}
}
var return_menu = filterSource;
return_menu.menu_by_cat = resultant_menu;
console.log('resultant menu')
console.log(resultant_menu);
return return_menu;
}
var getSpeciesByCat = function(category_id){
const filterSource = JSON.parse(sessionStorage.full_menu);
var menu_items = filterSource.menu_by_cat[category_id];
//console.log(menu_items);
var species = [];
for(var i = 0; i < menu_items.length; i++){
if(species.indexOf(menu_items[i].data.species) == -1){
species.push(menu_items[i].data.species);
//console.log(menu_items[i].data.species)
}
}
console.log(species)
return species;
}
var getSpecies = function(){
console.log('menu');
const filterSource = JSON.parse(sessionStorage.full_menu);
console.log(filterSource.menu_by_cat);
var species_items = [];
for(var id in filterSource.menu_by_cat){
//species_items.concat(getSpeciesByCat(id));
console.log(getSpeciesByCat(id))
species_items = species_items.concat(getSpeciesByCat(id));
}
console.log('final')
console.log(species_items)
return [...new Set(species_items)];
return species_items;
}
var getBrandsByCat = function(category_id){
filterSource = JSON.parse(sessionStorage.full_menu);
var menu_items = filterSource.menu_by_cat[category_id];
var brands = [];
for(var i = 0; i < menu_items.length; i++){
if(brands.indexOf(menu_items[i].data.brand) == -1){
brands.push(menu_items[i].data.brand);
}
}
return brands;
}
var get_brands = function(){
const filterSource = JSON.parse(sessionStorage.full_menu);
console.log(filterSource.menu_by_cat);
var brand_items = [];
for(var id in filterSource.menu_by_cat){
//species_items.concat(getSpeciesByCat(id));
console.log(getSpeciesByCat(id))
brand_items = brand_items.concat(getBrandsByCat(id));
}
console.log('brands')
console.log(brand_items)
return [...new Set(brand_items)].sort();
return brand_items;
}
var get_subcategoriesx = function(category_id){
filterSource = JSON.parse(sessionStorage.full_menu);
console.log('right here');
//console.log(filterSource.menu_by_cat);
var menu_items = filterSource.menu_by_cat[category_id];
console.log(menu_items);
var subcategories = {};
for(var i = 0; i < menu_items.length; i++){
console.log(menu_items[i])
var subcat_id = menu_items[i].data.subcategory_id;
console.log('sub id -> ' + subcat_id);
if(typeof subcategories[subcat_id] == 'undefined'){
for(var j = 0; j < filterSource.subcategories.length; j++){
//console.log(filterSource.subcategories[j]);
if(filterSource.subcategories[j]['id'] == subcat_id){
subcategories[subcat_id] = new FilterItem(filterSource.subcategories[j]['text'], filterSource.subcategories[j]['id']);
subcategories[subcat_id].count = 1;
break;
}
}
}
else{
subcategories[subcat_id].count += 1;
}
}
return subcategories;
}
var getSubcats = function(){
const filterSource = JSON.parse(sessionStorage.full_menu);
console.log(filterSource.menu_by_cat);
var cats_items = {};
for(cat in filterSource.menu_by_cat){
console.log('cat');
console.log(filterSource.menu_by_cat[cat]);
cats_items[cat] = get_subcategoriesx(cat);
}
console.log('end');
console.log(cats_items);
return cats_items;
}
var getSubcatsxx = function(legacy){
var filterSource = JSON.parse(sessionStorage.full_menu);
var subcategories = {};
console.log(filterSource.menu_by_cat);
for(var i in filterSource.menu_by_cat){
if(typeof subcategories[filterSource.menu_by_cat[i].data.subcategory_id] == 'undefined'){
for(var j = 0; j < filterSource.subcategories.length; j++){
console.log(filterSource.menu_by_cat.i.data.subcategory_id);
if(filterSource.subcategories[j]['id'] == filterSource.menu_by_cat[i].data.subcategory_id){
subcategories[filterSource.menu_by_cat.i.data.subcategory_id] = new FilterItem(filterSource.subcategories[j]['text'], filterSource.subcategories[j]['id']);
subcategories[filterSource.menu_by_cat.i.data.subcategory_id].count = 1;
break;
}
}
}
else{
subcategories[filterSource.menu_by_cat.i.data.subcategory_id].count += 1;
}
}
console.log('subs');
console.log(subcategories);
return subcategories;
}
var hasMemberPricing = function(){
var filtersource2 = JSON.parse(sessionStorage.full_menu);
for(var cat in filtersource2.menu_by_cat){
var cat_contents = filtersource2.menu_by_cat[cat];
for(var j = 0; j < cat_contents.length; j++){
var item = JSON.stringify(cat_contents[j]);
if(item.indexOf('member_quantity_prices') != -1){
return true;
}
}
}
return false;
}
var hasOnSaleProducts = function(){
var filtersource2 = JSON.parse(sessionStorage.full_menu);
for(var cat in filtersource2.menu_by_cat){
//var filtersource2 = JSON.parse(sessionStorage.full_menu);
for(var j = 0; j < filtersource2.menu_by_cat[cat].length; j++){
if(filtersource2.menu_by_cat[cat][j].data.is_on_sale_member == 1){
return true;
}
else if(filtersource2.menu_by_cat[cat][j].data.is_on_sale == 1){
return true;
}
}
}
return false;
}
var hasMedicalItems = function(menu_by_cats){
for(var cat in menu_by_cats){
for(var j = 0; j < menu_by_cats[cat].length; j++){
if(menu_by_cats[cat][j].data.medrec == 'Medical' || menu_by_cats[cat][j].data.medrec == 'Both'){
return true;
}
}
}
return false;
}
var hasRecreationalItems = function(menu_by_cats){
for(var cat in menu_by_cats){
for(var j = 0; j < menu_by_cats[cat].length; j++){
if(menu_by_cats[cat][j].data.medrec == 'Recreational' || menu_by_cats[cat][j].data.medrec == 'Both'){
return true;
}
}
}
return false;
}
this.drawFilters = async function(thc_minmax, price_minmax){
var endpoint = 'https://menustore.canname.nu/api.php';
var fd = new FormData();
fd.append('action', 'GetCategoriesArray');
var resp = await fetch(endpoint, {method: 'POST', body: fd});
var cats = await resp.json();
sessionStorage.cats = JSON.stringify(cats);
console.log('price minmax');
console.log(price_minmax)
var filter_wrapper = document.createElement('div');
filter_wrapper.className = 'filter-wrapper';
//return filter_wrapper;
var closer_row_top = document.createElement('div');
closer_row_top.className = 'cp-closer-row';
closer_row_top.style.display = 'none';
var closer = document.createElement('a');
closer.style.cursor = 'pointer';
closer.style.float = 'left';
closer.innerHTML = '×';
closer.style.textDecoration = 'none';
closer.style.fontSize = '30px';
closer.style.color = 'red';
closer.onclick = function(){
document.getElementById('cp_filter_home').style.display = 'none';
}
closer_row_top.appendChild(closer);
var search_button_top = document.createElement('button');
search_button_top.className = 'cp-search-button';
search_button_top.style.padding = '10px';
search_button_top.style.float = 'right';
search_button_top.onclick = function(){
document.getElementById('cp_filter_home').style.display = 'none';
}
var mag_glass = document.createElement('img');
mag_glass.src = SERVER_BASEURL + '/images/magnifying-glass-thin.svg';
mag_glass.style.width = '24px';
search_button_top.appendChild(document.createTextNode('Close Filters'));
//closer_row_top.appendChild(search_button_top);
filter_wrapper.appendChild(closer_row_top);
var clear_row = document.createElement('div');
clear_row.style.clear = 'both';
filter_wrapper.appendChild(clear_row);
filterSource = JSON.parse(sessionStorage.full_menu);
var medrec_wrapper = document.createElement('div');
var medrec_h3 = document.createElement('h3');
medrec_h3.appendChild(document.createTextNode('I am a: '));
medrec_wrapper.appendChild(medrec_h3);
var has_med = false;
var has_rec = false;
if(hasMedicalItems(filterSource.menu_by_cat)){
var med_wrapper = document.createElement('div');
var med_button = document.createElement('input');
med_button.type = 'checkbox';
med_button.className = 'filter-checkbox';
med_button.name = 'medrec_checkbox';
med_button.value = 'Medical';
med_button.style.marginRight = '7px';
med_button.style.display = 'inline';
med_wrapper.appendChild(med_button);
med_wrapper.appendChild(document.createTextNode(' Medical Patient '));
medrec_wrapper.appendChild(med_wrapper);
has_med = true;
}
if(hasRecreationalItems(filterSource.menu_by_cat)){
var rec_wrapper = document.createElement('div');
var rec_button = document.createElement('input');
rec_button.type = 'checkbox';
rec_button.className = 'filter-checkbox';
rec_button.name = 'medrec_checkbox';
rec_button.value = 'Recreational';
rec_button.style.marginRight = '7px';
rec_button.style.display = 'inline';
rec_wrapper.appendChild(rec_button);
rec_wrapper.appendChild(document.createTextNode(' Recreational Customer'));
medrec_wrapper.appendChild(rec_wrapper);
has_rec = true;
}
if(!has_med || !has_rec){
if(!has_med && has_med){
rec_button.disabled = true;
}
else if(!has_rec && has_med){
med_button.disabled = true;
}
}
filter_wrapper.appendChild(medrec_wrapper);
var search_wrapper = document.createElement('div');
search_wrapper.className = 'cp-search-wrapper';
var search_box = document.createElement('input');
search_box.placeholder = 'Search';
search_box.style.width = '100%';
search_box.style.marginRight = '5px';
search_box.id = 'cp_text_search';
//search_box.value = sessionStorage.search_text;
search_box.oninput = function(e){
e.preventDefault();
//sessionStorage.setItem('search_text', this.value);
main_menu.showFilteredMenu();
//this.focus();
}
search_wrapper.appendChild(search_box);
var search_button_link = document.createElement('a');
search_button_link.appendChild(mag_glass);
search_button_link.id = 'cp-search-link';
search_button_link.style.display = 'none';
search_button_link.onclick = function(){
document.getElementById('cp_filter_home').style.display = 'none';
}
search_wrapper.appendChild(search_button_link);
filter_wrapper.appendChild(search_wrapper);
var subcatz = {};
var all_subs = getSubcats();
console.log('all_subs');
console.log(all_subs);
for(var categ in all_subs){
subcatz[categ] = {};
for(var subc in all_subs[categ]){
subcatz[categ][subc] = all_subs[categ][subc];
}
}
var subs = subcatz;
//var subs = getSubcats()[1];
console.log('subsz');
console.log(subs);
var h3 = document.createElement('h3');
h3.style.marginBottom = '0px';
h3.appendChild(document.createTextNode('Subcategories'));
var subcat_open_link = document.createElement('a');
subcat_open_link.className = 'cp-menu-toggle';
subcat_open_link.appendChild(document.createTextNode(' (+)'));
subcat_open_link.style.textDecoration = 'none';
subcat_open_link.style.cursor = 'pointer';
subcat_open_link.onclick = function(){
var container = this.closest('div');
var mode_select = container.querySelector('.cp-menu-toggle');
var mode = container.querySelector('.cp-menu-toggle').innerHTML.indexOf('+') != -1 ? 'block' : 'none';
container.querySelector('.subcategories-toggle-pane').style.display = mode;
mode_select.innerHTML = 'block' == mode ? ' (-)' : ' (+)';
}
h3.appendChild(subcat_open_link);
//filter_wrapper.appendChild(h3);
var subcategories_wrapper = document.createElement('div');
//subcategories_wrapper.appendChild(h3);
subcategories_wrapper.className = 'subcategories-wrapper';
var subcategories_toggle_pane = document.createElement('div');
subcategories_toggle_pane.className = 'subcategories-toggle-pane';
//return filter_wrapper;
for(categ in subs){
var catcount = 0;
var subcat_cat_title = document.createElement('div');
var catlink = document.createElement('a');
catlink.style.color = '#000';
catlink.style.cursor = 'pointer';
catlink.style.textDecoration = 'none';
catlink.appendChild(document.createTextNode(cats[categ]));
catlink.onclick = function(){
var acc_panels = document.getElementsByClassName('accordionItem');
for(var x = 0; x < acc_panels.length; x++){
var linktext = this.innerHTML;
var tabtext = acc_panels[x].querySelector('h2').innerHTML;
if(tabtext.indexOf(linktext) != -1){
acc_panels[x].className = 'accordionItem open';
}
else{
acc_panels[x].className = 'accordionItem close';
}
}
}
subcat_cat_title.appendChild(catlink);
subcategories_toggle_pane.appendChild(subcat_cat_title);
var subcat_ul = document.createElement('ul');
subcat_ul.style.listStyleType = 'none';
subcategories_toggle_pane.appendChild(subcat_ul);
console.log('subs[categ]');
console.log(subs[categ]);
for(var i in subs[categ]){
var subcategory_wrapper = document.createElement('li');
catcount += subs[categ][i].count;
subcategory_wrapper.className = 'subcategory-wrapper';
var subcat_checkbox = document.createElement('input');
subcat_checkbox.type = 'checkbox';
subcat_checkbox.name = 'subcat_checkbox';
subcat_checkbox.value = i;
subcat_checkbox.style.marginRight = '7px';
subcat_checkbox.style.display = 'inline';
subcat_checkbox.className = 'filter-checkbox';
//subcat_checkbox.onchange = main_menu.showFilteredMenu;
var cbspan = document.createElement('span');
cbspan.appendChild(subcat_checkbox);
subcategory_wrapper.appendChild(cbspan);
//subcategory_wrapper.textContent += ' ' + subs[i].text;
var text;// = '' == subs[categ][i].text ? 'Other' : subs[categ][i].text;
if('' == subs[categ][i].text){
//text = cats[categ].indexOf('lower') != -1 ? 'Flower' : 'Other';
}
else{
subcat_ul.appendChild(subcategory_wrapper);
text = subs[categ][i].text;
text += ' (' + subs[categ][i].count + ')';
subcategory_wrapper.appendChild(document.createTextNode(ucFirst(text)));
}
//subcategories_toggle_pane.appendChild(subcategory_wrapper);
}
catlink.appendChild(document.createTextNode(' (' + catcount + ')'));
}
var ending = document.createElement('div');
ending.style.clear = 'both';
subcategories_toggle_pane.appendChild(ending);
subcategories_wrapper.appendChild(subcategories_toggle_pane);
filter_wrapper.appendChild(subcategories_wrapper);
var species_h3 = document.createElement('h3');
species_h3.style.width = '100%';
species_h3.style.clear = 'both';
species_h3.style.marginBottom = '0px';
species_h3.appendChild(document.createTextNode('Species'));
var species_open_link = document.createElement('a');
species_open_link.className = 'cp-menu-toggle';
species_open_link.appendChild(document.createTextNode(' (+)'));
species_open_link.style.textDecoration = 'none';
species_open_link.style.cursor = 'pointer';
species_open_link.onclick = function(){
var container = this.closest('div');
var mode_select = container.querySelector('.cp-menu-toggle');
var mode = container.querySelector('.cp-menu-toggle').innerHTML.indexOf('+') != -1 ? 'block' : 'none';
container.querySelector('.species-toggle-pane').style.display = mode;
mode_select.innerHTML = 'block' == mode ? ' (-)' : ' (+)';
}
species_h3.appendChild(species_open_link);
var species_toggle_pane = document.createElement('div');
species_toggle_pane.className = 'species-toggle-pane';
var specie_wrapper = document.createElement('div');
specie_wrapper.appendChild(species_h3);
specie_wrapper.className = 'specie-wrapper';
var species_arr = getSpecies();
for(var i = 0; i < species_arr.length; i++){
if(species_arr[i]){
var species_wrapper = document.createElement('div');
species_wrapper.className = 'species-wrapper';
var species_checkbox = document.createElement('input');
species_checkbox.type = 'checkbox';
species_checkbox.name = 'species_checkbox';
species_checkbox.value = species_arr[i];
species_checkbox.style.marginRight = '7px';
species_checkbox.style.display = 'inline';
species_checkbox.className = 'filter-checkbox';
//subcat_checkbox.onchange = main_menu.showFilteredMenu;
var cbspan = document.createElement('span');
cbspan.appendChild(species_checkbox);
species_wrapper.appendChild(cbspan);
//subcategory_wrapper.textContent += ' ' + subs[i].text;
var text = species_arr[i];
species_wrapper.appendChild(document.createTextNode(ucFirst(text)));
species_toggle_pane.appendChild(species_wrapper);
}
}
species_toggle_pane.appendChild(ending);
specie_wrapper.appendChild(species_toggle_pane);
filter_wrapper.appendChild(specie_wrapper);
var brand_h3 = document.createElement('h3');
brand_h3.style.width = '100%';
brand_h3.style.clear = 'both';
brand_h3.style.marginBottom = '0px';
brand_h3.appendChild(document.createTextNode('Brand'));
//filter_wrapper.appendChild(brand_h3);
var brands_toggle_pane = document.createElement('div');
brands_toggle_pane.className = 'brands-toggle-pane';
var brands_wrapper = document.createElement('div');
brands_wrapper.appendChild(brand_h3);
brands_wrapper.className = 'brands-wrapper';
var brands_open_link = document.createElement('a');
brands_open_link.className = 'cp-menu-toggle';
brands_open_link.appendChild(document.createTextNode(' (+)'));
brands_open_link.style.textDecoration = 'none';
brands_open_link.style.cursor = 'pointer';
brands_open_link.onclick = function(){
var container = this.closest('div');
var mode_select = container.querySelector('.cp-menu-toggle');
var mode = container.querySelector('.cp-menu-toggle').innerHTML.indexOf('+') != -1 ? 'block' : 'none';
container.querySelector('.brands-toggle-pane').style.display = mode;
mode_select.innerHTML = 'block' == mode ? ' (-)' : ' (+)';
}
brand_h3.appendChild(brands_open_link);
var brand_arr = get_brands();
for(var i = 0; i < brand_arr.length; i++){
if(brand_arr[i]){
var brand_wrapper = document.createElement('div');
brand_wrapper.className = 'brand-wrapper';
var brand_checkbox = document.createElement('input');
brand_checkbox.type = 'checkbox';
brand_checkbox.name = 'brand_checkbox';
brand_checkbox.value = brand_arr[i];
brand_checkbox.style.marginRight = '7px';
brand_checkbox.style.display = 'inline';
brand_checkbox.className = 'filter-checkbox';
//subcat_checkbox.onchange = main_menu.showFilteredMenu;
var cbspan = document.createElement('span');
cbspan.appendChild(brand_checkbox);
brand_wrapper.appendChild(cbspan);
//subcategory_wrapper.textContent += ' ' + subs[i].text;
var text = brand_arr[i];
brand_wrapper.appendChild(document.createTextNode(ucFirst(text)));
brands_toggle_pane.appendChild(brand_wrapper);
}
}
brands_toggle_pane.appendChild(ending);
brands_wrapper.appendChild(brands_toggle_pane);
filter_wrapper.appendChild(brands_wrapper);
var thc_h3 = document.createElement('h3');
thc_h3.style.width = '100%';
thc_h3.style.clear = 'both';
thc_h3.style.marginBottom = '0px';
thc_h3.appendChild(document.createTextNode('Min THC '));
var thc_display = document.createElement('span');
thc_display.id = 'thc_displayx';
thc_display.innerHTML = sessionStorage.thc_pct && sessionStorage.thc_pct != '0' ? sessionStorage.thc_pct : 'All';
thc_h3.appendChild(thc_display);
thc_h3.appendChild(document.createTextNode('%'));
//filter_wrapper.appendChild(thc_h3);
var thc_toggle_pane = document.createElement('div');
thc_toggle_pane.className = 'thc-toggle-pane';
var thc_wrapper = document.createElement('div');
thc_wrapper.appendChild(thc_h3);
thc_wrapper.className = 'cp-thc-wrapper';
var thc_open_link = document.createElement('a');
thc_open_link.className = 'cp-menu-toggle';
thc_open_link.appendChild(document.createTextNode(' (+)'));
thc_open_link.style.textDecoration = 'none';
thc_open_link.style.cursor = 'pointer';
thc_open_link.onclick = function(){
var container = this.closest('div');
var mode_select = container.querySelector('.cp-menu-toggle');
var mode = container.querySelector('.cp-menu-toggle').innerHTML.indexOf('+') != -1 ? 'block' : 'none';
container.querySelector('.thc-toggle-pane').style.display = mode;
mode_select.innerHTML = 'block' == mode ? ' (-)' : ' (+)';
}
thc_h3.appendChild(thc_open_link);
var thc_slider = document.createElement('input');
thc_slider.type = 'range';
//alert(thc_minmax.min);
thc_slider.min = Math.floor(thc_minmax.min);
thc_slider.max = Math.floor(thc_minmax.max);
thc_slider.style.display = 'inline'
thc_slider.value = sessionStorage.thc_pct || Math.floor(thc_minmax.min);
//thc_slider.className = 'filter-checkbox';
thc_slider.id = 'cp_thc_slider';
thc_slider.oninput = function(){
sessionStorage.thc_pct = this.value;
thc_display.innerHTML = '';
var thc_display_obj = document.getElementById('thc_displayx');
thc_display_obj.innerHTML = this.value === this.min ? 'All' : this.value;
}
thc_slider.onchange = function(){
//main_menu.showFilteredMenu();
var new_filters = document.querySelectorAll('.filters-outer input[type="checkbox"]:checked');
//console.log('new filters' + new_filters.length);
var new_filters_to_set = [];
for(var i = 0; i < new_filters.length; i++){
new_filters_to_set.push(new_filters[i].value);
}
sessionStorage.setItem('filters', JSON.stringify(new_filters_to_set));
//sessionStorage.thc_pct = sessionStorage.thc_pct || 0;
main_menu.showFilteredMenu();
thc_display.innerHTML = '';
var thc_display_obj = document.getElementById('thc_displayx');
thc_display_obj.innerHTML = this.value === this.min ? 'All' : this.value;
}
thc_toggle_pane.appendChild(thc_slider);
thc_wrapper.appendChild(thc_toggle_pane);
filter_wrapper.appendChild(thc_wrapper);
var price_h3 = document.createElement('h3');
price_h3.style.width = '100%';
price_h3.style.clear = 'both';
price_h3.style.marginBottom = '0px';
price_h3.appendChild(document.createTextNode('Max Price: $'));
var price_display = document.createElement('span');
price_display.id = 'price_display';
price_display.innerHTML = 'All';
price_h3.appendChild(price_display);
//filter_wrapper.appendChild(price_h3);
var price_toggle_pane = document.createElement('div');
price_toggle_pane.className = 'price-toggle-pane';
var price_wrapper = document.createElement('div');
price_wrapper.appendChild(price_h3)
price_wrapper.className = 'cp_price_wrapper';
var price_open_link = document.createElement('a');
price_open_link.className = 'cp-menu-toggle';
price_open_link.appendChild(document.createTextNode(' (+)'));
price_open_link.style.textDecoration = 'none';
price_open_link.style.cursor = 'pointer';
price_open_link.onclick = function(){
var container = this.closest('div');
var mode_select = container.querySelector('.cp-menu-toggle');
var mode = container.querySelector('.cp-menu-toggle').innerHTML.indexOf('+') != -1 ? 'block' : 'none';
container.querySelector('.price-toggle-pane').style.display = mode;
mode_select.innerHTML = 'block' == mode ? ' (-)' : ' (+)';
}
price_h3.appendChild(price_open_link);
var price_slider = document.createElement('input');
price_slider.type = 'range';
//alert(thc_minmax.min);
price_slider.min = 0;
price_slider.max = Math.ceil(price_minmax.max);
price_slider.value = Math.ceil(price_minmax.max);
price_slider.style.display = 'inline';
//price_slider.value = sessionStorage.price_in_range != '0' || Math.ceil(price_minmax.max);
//thc_slider.className = 'filter-checkbox';
price_slider.id = 'cp_price_slider';
price_slider.oninput = function(){
sessionStorage.price_in_range = this.value;
price_display.innerHTML = '';
var price_display_obj = document.getElementById('price_display');
price_display_obj.innerHTML = this.value;
}
price_slider.onchange = function(){
//main_menu.showFilteredMenu();
var new_filters = document.querySelectorAll('.filters-outer input[type="checkbox"]:checked');
//console.log('new filters' + new_filters.length);
var new_filters_to_set = [];
for(var i = 0; i < new_filters.length; i++){
new_filters_to_set.push(new_filters[i].value);
}
sessionStorage.setItem('filters', JSON.stringify(new_filters_to_set));
//sessionStorage.thc_pct = sessionStorage.thc_pct || 0;
main_menu.showFilteredMenu();
price_display.innerHTML = '';
var price_display_obj = document.getElementById('price_display');
price_display_obj.innerHTML = this.value === this.min ? 'All' : this.value;
}
price_toggle_pane.appendChild(price_slider);
price_wrapper.appendChild(price_toggle_pane);
filter_wrapper.appendChild(price_wrapper);
if(hasMemberPricing()){
var member_price_wrapper = document.createElement('div');
var member_price_checkbox = document.createElement('input');
member_price_checkbox.type = 'checkbox';
member_price_checkbox.id = 'cp_member_price_checkbox';
member_price_checkbox.style.marginRight = '7px';
member_price_checkbox.style.display = 'inline';
member_price_checkbox.className = 'filter-checkbox';
member_price_wrapper.appendChild(member_price_checkbox);
member_price_wrapper.appendChild(document.createTextNode('Show Member Pricing'));
filter_wrapper.appendChild(member_price_wrapper);
}
if(hasOnSaleProducts()){
var on_sale_wrapper = document.createElement('div');
var on_sale_checkbox = document.createElement('input');
on_sale_checkbox.type = 'checkbox';
on_sale_checkbox.id = 'cp_on_sale_checkbox';
on_sale_checkbox.style.marginRight = '7px';
on_sale_checkbox.style.display = 'inline';
on_sale_checkbox.className = 'filter-checkbox';
on_sale_wrapper.appendChild(on_sale_checkbox);
on_sale_wrapper.appendChild(document.createTextNode('Show Sale Items Only'));
filter_wrapper.appendChild(on_sale_wrapper);
}
var closer_row_bottom = document.createElement('div');
closer_row_bottom.className = 'cp-closer-row';
closer_row_bottom.style.display = 'block';
var search_button_bottom = search_button_top.cloneNode(true);
search_button_bottom.onclick = function(){
document.getElementById('cp_filter_home').style.display = 'none';
}
closer_row_bottom.appendChild(search_button_bottom);
//filter_wrapper.appendChild(closer_row_bottom);
return filter_wrapper;
}
var thiss = this;
}
function FilterItem(item_text, id){
this.count = 0;
this.text = item_text;
this.id = id;
}
var main_menu = null;
var thc_slider_minmax = null;
var price_slider_minmax = null;
var adilas_store_id = '2305';
window.addEventListener('resize', function(event) {
var accordion = document.getElementById('cp_menu_home');
var menu_is_visible = (accordion.offsetWidth > 0 || accordion.offsetHeight > 0) && (!document.getElementById('cart_div') || document.getElementById('cart_div').style.display == 'none');
if(document.getElementById("cannamenu-div").offsetWidth > 674 && menu_is_visible){
document.getElementById('cp_filter_home').style.setProperty('display', 'block', 'important');
}
else{
//document.getElementById('cp_filter_home').style.setProperty('display', 'none', 'important');
}
//document.getElementById('cp_filter_home').style.display = 'block';
}, true);
function CannaMenu(){
this.dispensaryId = 'val-1452';
this.endpoint = 'https://menustore.canname.nu/api.php';
this.showDefaultMenu = async function(){
var fd = new FormData();
fd.append('action', 'ShowMenu');
fd.append('disp_id', this.dispensaryId);
fd.append('store_id', adilas_store_id);
var resp = await fetch(this.endpoint, {method: 'POST', body: fd});
var menu = await resp.json();
sessionStorage.full_menu = JSON.stringify(menu);
sessionStorage.disp_hash = menu.disp_hash;
var fd = new FormData();
fd.append('action', 'GetEstTaxRate');
fd.append('login_key', this.dispensaryId);
var resp = await fetch(this.endpoint, {method: 'POST', body: fd});
sessionStorage.est_tax_rate = await resp.json() * .01;
var renderedMenu = this.renderMenu(menu);
cannamenu_div.innerHTML = '';
cannamenu_div.className = 'canna_ecommerce_wrapper';
document.getElementById('cannamenu-div').onresize = function() {
alert('resize');
const content_panels2 = document.getElementsByClassName('accordionItemContent');
for (var z = 0; z < content_panels2.length; z++) {
var nav_arrow_left = document.createElement('a');
nav_arrow_left.className = 'cp-nav-arrow-left';
nav_arrow_left.style.borderRadius = '50%';
nav_arrow_left.style.position = 'absolute';
nav_arrow_left.style.top = '50%';
nav_arrow_left.style.left = '-15px';
nav_arrow_left.style.background = '#000';
nav_arrow_left.style.color = '#fff';
nav_arrow_left.style.padding = '10px 15px';
nav_arrow_left.style.fontSize = '32px';
nav_arrow_left.style.fontWeight = '500';
nav_arrow_left.style.textDecoration = 'none';
nav_arrow_left.style.cursor = 'pointer';
nav_arrow_left.onclick = function () {
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft - 220;
}
nav_arrow_left.appendChild(document.createTextNode('<'));
var nav_arrow_right = document.createElement('a');
nav_arrow_right.className = 'cp-nav-arrow-right';
nav_arrow_right.style.borderRadius = '50%';
nav_arrow_right.style.position = 'absolute';
nav_arrow_right.style.top = '50%';
nav_arrow_right.style.right = '-15px';
nav_arrow_right.style.background = '#000';
nav_arrow_right.style.color = '#fff';
nav_arrow_right.style.padding = '10px 15px';
nav_arrow_right.style.fontSize = '32px';
nav_arrow_right.style.fontWeight = '500';
nav_arrow_right.style.textDecoration = 'none';
nav_arrow_right.style.cursor = 'pointer';
nav_arrow_right.onclick = function () {
//alert('rt scroll')
//this.closest('div').style.background = 'red';;
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft + 220;
//this.style.right = '-15px';
}
nav_arrow_right.appendChild(document.createTextNode('>'));
if (content_panels2[z].clientWidth < content_panels2[z].scrollWidth) {
content_panels2[z].closest('.content-panel-wrapper').appendChild(nav_arrow_left);
content_panels2[z].closest('.content-panel-wrapper').appendChild(nav_arrow_right);
}
}
}
var style = document.createElement('style');
var styles = menu.styles;
style.appendChild(document.createTextNode(styles));
cannamenu_div.appendChild(style);
var filter_home = document.createElement('div');
filter_home.id = 'cp_filter_home';
cannamenu_div.appendChild(filter_home);
console.log('price)')
console.log(getSliderMinmax(menu, 'price').max);
renderedMenu.id = 'canna_menu';
var menu_home = document.createElement('div');
menu_home.id = 'cp_menu_home';
menu_home.appendChild(renderedMenu);
cannamenu_div.appendChild(menu_home);
var clear_div = document.createElement('div');
clear_div.style.clear = 'both';
cannamenu_div.appendChild(clear_div);
getSliderMinmax(menu, 'thc');
this.setupFilters(thc_slider_minmax, getSliderMinmax(menu, 'price'));
//this.setupAccordion(thc_slider_minmax, getSliderMinmax(menu, 'price'));
cart = new CpCart();
cart.wireMenuPage();
var content_panels = document.getElementsByClassName('accordionItemContent');
for(var z = 0; z < content_panels.length; z++){
var nav_arrow_left = document.createElement('a');
nav_arrow_left.className = 'cp-nav-arrow-left';
nav_arrow_left.style.borderRadius = '50%';
nav_arrow_left.style.position = 'absolute';
nav_arrow_left.style.top = '50%';
nav_arrow_left.style.left = '-15px';
nav_arrow_left.style.background = '#000';
nav_arrow_left.style.color = '#fff';
nav_arrow_left.style.padding = '10px 15px';
nav_arrow_left.style.fontSize = '32px';
nav_arrow_left.style.fontWeight = '500';
nav_arrow_left.style.textDecoration = 'none';
nav_arrow_left.style.cursor = 'pointer';
nav_arrow_left.onclick = function(){
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft - 220;
}
nav_arrow_left.appendChild(document.createTextNode('<'));
var nav_arrow_right = document.createElement('a');
nav_arrow_right.className = 'cp-nav-arrow-right';
nav_arrow_right.style.borderRadius = '50%';
nav_arrow_right.style.position = 'absolute';
nav_arrow_right.style.top = '50%';
nav_arrow_right.style.right = '-15px';
nav_arrow_right.style.background = '#000';
nav_arrow_right.style.color = '#fff';
nav_arrow_right.style.padding = '10px 15px';
nav_arrow_right.style.fontSize = '32px';
nav_arrow_right.style.fontWeight = '500';
nav_arrow_right.style.textDecoration = 'none';
nav_arrow_right.style.cursor = 'pointer';
nav_arrow_right.onclick = function(){
//alert('rt scroll')
//this.closest('div').style.background = 'red';;
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft + 220;
//this.style.right = '-15px';
}
nav_arrow_right.appendChild(document.createTextNode('>'));
if(content_panels[z].clientWidth < content_panels[z].scrollWidth){
content_panels[z].closest('.content-panel-wrapper').appendChild(nav_arrow_left);
content_panels[z].closest('.content-panel-wrapper').appendChild(nav_arrow_right);
}
}
};
respondToVisibility = function(element, callback) {
var options = {
root: document.documentElement
}
var observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
callback(entry.intersectionRatio > 0);
});
}, options);
observer.observe(element);
}
respondToVisibility(document.getElementById("cannamenu-div"), visible => {
if(visible) {
var panels = document.getElementsByClassName('accordionItemContent');
for(var z = 0; z < panels.length; z++){
var nav_arrow_left = document.createElement('a');
nav_arrow_left.className = 'cp-nav-arrow-left';
nav_arrow_left.style.borderRadius = '50%';
nav_arrow_left.style.position = 'absolute';
nav_arrow_left.style.top = '50%';
nav_arrow_left.style.left = '-15px';
nav_arrow_left.style.background = '#000';
nav_arrow_left.style.color = '#fff';
nav_arrow_left.style.padding = '10px 15px';
nav_arrow_left.style.fontSize = '32px';
nav_arrow_left.style.fontWeight = '500';
nav_arrow_left.style.textDecoration = 'none';
nav_arrow_left.style.cursor = 'pointer';
nav_arrow_left.onclick = function(){
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft - 220;
}
nav_arrow_left.appendChild(document.createTextNode('<'));
var nav_arrow_right = document.createElement('a');
nav_arrow_right.className = 'cp-nav-arrow-right';
nav_arrow_right.style.borderRadius = '50%';
nav_arrow_right.style.position = 'absolute';
nav_arrow_right.style.top = '50%';
nav_arrow_right.style.right = '-15px';
nav_arrow_right.style.background = '#000';
nav_arrow_right.style.color = '#fff';
nav_arrow_right.style.padding = '10px 15px';
nav_arrow_right.style.fontSize = '32px';
nav_arrow_right.style.fontWeight = '500';
nav_arrow_right.style.textDecoration = 'none';
nav_arrow_right.style.cursor = 'pointer';
nav_arrow_right.onclick = function(){
//alert('rt scroll')
//this.closest('div').style.background = 'red';;
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft + 220;
//this.style.right = '-15px';
}
nav_arrow_right.appendChild(document.createTextNode('>'));
if(panels[z].clientWidth < panels[z].scrollWidth){
panels[z].closest('.content-panel-wrapper').appendChild(nav_arrow_left);
panels[z].closest('.content-panel-wrapper').appendChild(nav_arrow_right);
}
}
}
});
var getItemPricingMinMax = function(pricing){
if(null == pricing) return false;
var price_arr = [];
if(typeof pricing.single_quantity_prices != 'undefined'){
for(var i = 0; i < pricing.single_quantity_prices.length; i++){
price_arr.push(pricing.single_quantity_prices[i].price);
}
return {min: Math.min(...price_arr), max: Math.max(...price_arr)};
}
if(typeof pricing.member_quantity_prices != 'undefined'){
if((typeof localStorage.getItem('show_member_pricing') != 'undefined' && localStorage.getItem('show_member_pricing') != 'false') || typeof pricing.nonmember_quantity_prices == 'undefined'){
for(var i = 0; i < pricing.member_quantity_prices.length; i++){
price_arr.push(pricing.member_quantity_prices[i].price);
}
//alert('returning member');
return {min: Math.min(...price_arr), max: Math.max(...price_arr)};
}
else{
for(var i = 0; i < pricing.nonmember_quantity_prices.length; i++){
price_arr.push(pricing.nonmember_quantity_prices[i].price);
}
//alert('returning nonmember');
return {min: Math.min(...price_arr), max: Math.max(...price_arr)};
}
}
};
var getSliderMinmax = function(menu, type, return_value){
if(!type) return false;
var menu_by_cat = menu.menu_by_cat;
var values_arr = [];
switch(type){
case 'thc':
for(var cat in menu_by_cat){
for(var i = 0; i < menu_by_cat[cat].length; i++){
if(-1 == menu_by_cat[cat][i].data.thc_pct){
continue;
}
values_arr.push(parseFloat(menu_by_cat[cat][i].data.thc_pct));
}
}
if(return_value){
return {min: Math.min(...values_arr), max: Math.max(...values_arr)};
}
thc_slider_minmax = {min: Math.min(...values_arr), max: Math.max(...values_arr)};
break;
case 'price':
for(var cat in menu_by_cat){
for(var i = 0; i < menu_by_cat[cat].length; i++){
var pricing = menu_by_cat[cat][i].data.pricing;
var itemMinMax = getItemPricingMinMax(pricing);
//alert(JSON.stringify(itemMinMax));
values_arr.push(itemMinMax.min);
values_arr.push(itemMinMax.max);
}
}
price_slider_minmax = {min: Math.min(...values_arr), max: Math.max(...values_arr)};
return {min: Math.min(...values_arr), max: Math.max(...values_arr)};
break;
}
};
this.showFilteredMenu = function(){
//alert('filters');
var filters = new CpFilters();
var menu = filters.applyFilters();
console.log('menu');
console.log(menu);
var style = document.createElement('style');
var styles = menu.styles;
style.appendChild(document.createTextNode(styles));
//cannamenu_div.appendChild(style);
var renderedMenu = thiss.renderMenu(menu);
//cannamenu_div.innerHTML = '';
//cannamenu_div.appendChild(style);
//cannamenu_div.className = 'canna_ecommerce_wrapper';
renderedMenu.id = 'canna_menu';
//cannamenu_div.appendChild(renderedMenu);
var menu_div = document.getElementById('cp_menu_home');
menu_div.innerHTML = '';
menu_div.appendChild(renderedMenu);
thiss.setupAccordion(thc_slider_minmax, price_slider_minmax, true);
cart = new CpCart();
cart.wireMenuPage();
var content_panels = document.getElementsByClassName('accordionItemContent');
for(var z = 0; z < content_panels.length; z++){
var nav_arrow_left = document.createElement('a');
nav_arrow_left.className = 'cp-nav-arrow-left';
nav_arrow_left.style.borderRadius = '50%';
nav_arrow_left.style.position = 'absolute';
nav_arrow_left.style.top = '50%';
nav_arrow_left.style.left = '-15px';
nav_arrow_left.style.background = '#000';
nav_arrow_left.style.color = '#fff';
nav_arrow_left.style.padding = '10px 15px';
nav_arrow_left.style.fontSize = '32px';
nav_arrow_left.style.fontWeight = '500';
nav_arrow_left.style.textDecoration = 'none';
nav_arrow_left.style.cursor = 'pointer';
nav_arrow_left.onclick = function(){
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft - 220;
}
nav_arrow_left.appendChild(document.createTextNode('<'));
var nav_arrow_right = document.createElement('a');
nav_arrow_right.className = 'cp-nav-arrow-right';
nav_arrow_right.style.borderRadius = '50%';
nav_arrow_right.style.position = 'absolute';
nav_arrow_right.style.top = '50%';
nav_arrow_right.style.right = '-15px';
nav_arrow_right.style.background = '#000';
nav_arrow_right.style.color = '#fff';
nav_arrow_right.style.padding = '10px 15px';
nav_arrow_right.style.fontSize = '32px';
nav_arrow_right.style.fontWeight = '500';
nav_arrow_right.style.textDecoration = 'none';
nav_arrow_right.style.cursor = 'pointer';
nav_arrow_right.onclick = function(){
//alert('rt scroll')
//this.closest('div').style.background = 'red';;
var outer_div = this.closest('div');
outer_div.querySelector('div').scrollLeft = outer_div.querySelector('div').scrollLeft + 220;
//this.style.right = '-15px';
}
nav_arrow_right.appendChild(document.createTextNode('>'));
if(content_panels[z].clientWidth < content_panels[z].scrollWidth){
content_panels[z].closest('.content-panel-wrapper').appendChild(nav_arrow_left);
content_panels[z].closest('.content-panel-wrapper').appendChild(nav_arrow_right);
}
}
}
var hasMemberPricing = function(menu_by_cats){
var filtersource2 = JSON.parse(sessionStorage.full_menu);
for(var cat in filtersource2.menu_by_cat){
var cat_contents = filtersource2.menu_by_cat[cat];
for(var j = 0; j < cat_contents.length; j++){
var item = JSON.stringify(cat_contents[j]);
if(item.indexOf('member_quantity_prices') != -1){
return true;
}
}
}
return false;
}
var hasOnSaleProducts = function(menu_by_cats, member_only){
var filtersource2 = JSON.parse(sessionStorage.full_menu);
for(var cat in filtersource2.menu_by_cat){
var filtersource2 = JSON.parse(sessionStorage.full_menu);
for(var j = 0; j < filtersource2.menu_by_cat[cat].length; j++){
if(member_only){
if(filtersource2.menu_by_cat[cat][j].data.is_on_sale_member == 1){
return true;
}
}
else{
if(filtersource2.menu_by_cat[cat][j].data.is_on_sale == 1){
return true;
}
}
}
}
return false;
}
var renderPricing = function(pricing, uom, show_member_pricing){
var price_src = false;
if(typeof pricing.single_quantity_prices != 'undefined'){
price_src = pricing.single_quantity_prices;
}
else if(typeof pricing.member_quantity_prices != 'undefined'){
if(show_member_pricing){
price_src = pricing.member_quantity_prices;
}
else{
if(typeof pricing.nonmember_quantity_prices != 'undefined'){
price_src = pricing.nonmember_quantity_prices
}
else{
price_src = 'members_only';
}
}
}
return price_src;
}
this.renderMenu = function(menu_by_categories){
var menu_wrapper = document.createElement('div');
menu_wrapper.className = 'menu-wrapper';
var view_cart_div = document.createElement('div');
view_cart_div.style.position = 'relative';
view_cart_div.style.padding = '5px';
//view_cart_div.style.textAlign = 'right';
var view_cart_link = document.createElement('a');
view_cart_link.style.cursor = 'pointer';
view_cart_link.className = 'cp-view-cart';
view_cart_link.style.float = 'right';
//view_cart_link.appendChild(document.createTextNode('View Cart'));
var cart_image = document.createElement('img');
cart_image.src = SERVER_BASEURL + '/images/cart-shopping-solid.svg';
cart_image.style.width = '20px';
cart_image.alt = 'View Cart';
cart_image.title = 'View Cart';
const cart_counter_display = document.createElement('div');
cart_counter_display.id = 'cp_cart_counter_display';
cart_counter_display.style.lineHeight = '12px';
cart_counter_display.style.marginLeft = '3px';
cart_counter_display.innerHTML = '0';
const cart_counter = document.createElement('div');
cart_counter.style.position = 'absolute';
cart_counter.style.clear = 'both';
cart_counter.style.top = '-5px';
cart_counter.style.right = '0px';
cart_counter.style.height = '14px';
cart_counter.style.minWidth = '14px';
cart_counter.style.fontSize = '12px';
cart_counter.style.borderRadius = '50%';
cart_counter.style.background = 'green';
cart_counter.style.color = '#fff';
cart_counter.id = 'cp_cart_counter';
//cart_counter.innerHTML = '0';
cart_counter.appendChild(cart_counter_display);
view_cart_link.appendChild(cart_counter);
view_cart_link.appendChild(cart_image);
var show_filter_span = document.createElement('span');
show_filter_span.className = 'cp-show-filter-span';
show_filter_span.style.display = 'none';
show_filter_span.position = 'absolute';
show_filter_span.style.left = '5px';
var show_filter_icon = document.createElement('img');
show_filter_icon.style.width = '20px';
show_filter_icon.src = SERVER_BASEURL + '/images/bars-filter-solid.svg';
show_filter_icon.alt = 'Filter Results';
show_filter_icon.title = 'Filter Results';
var show_filter_link = document.createElement('a');
show_filter_link.style.cursor = 'pointer';
show_filter_link.onclick = function(){
document.getElementById('cp_filter_home').style.setProperty('display', 'block', 'important');
}
show_filter_link.appendChild(show_filter_icon);
show_filter_span.appendChild(show_filter_link);
view_cart_div.appendChild(show_filter_span);
view_cart_link.appendChild(cart_image);
view_cart_div.appendChild(view_cart_link);
menu_wrapper.appendChild(view_cart_div);
var filters_outer = document.createElement('div');
filters_outer.className = 'filters-outer';
menu_wrapper.appendChild(filters_outer);
/*if(hasMemberPricing(menu_by_categories.menu_by_cat)){
var member_price_wrapper = document.createElement('div');
var member_price_checkbox = document.createElement('input');
member_price_checkbox.type = 'checkbox';
member_price_checkbox.style.marginRight = '7px';
member_price_checkbox.style.display = 'inline';
member_price_checkbox.className = 'filter-checkbox';
if('member' == localStorage.getItem('show_member_pricing')){
member_price_checkbox.checked = true;
}
member_price_checkbox.onchange = function(){
if(this.checked){
localStorage.setItem('show_member_pricing', 'member');
}
else{
localStorage.setItem('show_member_pricing', 'false');
}
thiss.showFilteredMenu();
}
member_price_wrapper.appendChild(member_price_checkbox);
member_price_wrapper.appendChild(document.createTextNode('Show Member Pricing'));
menu_wrapper.appendChild(member_price_wrapper);
}
if(localStorage.show_member_pricing == 'member'){
var mem = true;
}
else{
var mem = false;
}
if(hasOnSaleProducts(menu_by_categories.menu_by_cat, mem)){
var on_sale_wrapper = document.createElement('div');
var on_sale_checkbox = document.createElement('input');
on_sale_checkbox.type = 'checkbox';
on_sale_checkbox.style.marginRight = '7px';
on_sale_checkbox.style.display = 'inline';
on_sale_checkbox.className = 'filter-checkbox';
if(sessionStorage.show_on_sale == 'member' && mem){
on_sale_checkbox.checked = true;
}
else if(sessionStorage.show_on_sale == 'nonmember' && !mem){
on_sale_checkbox.checked = true;
}
on_sale_checkbox.onchange = function(){
if(this.checked){
if(mem){
sessionStorage.setItem('show_on_sale', 'member');
}
else{
sessionStorage.setItem('show_on_sale', 'nonmember');
}
}
else{
sessionStorage.setItem('show_on_sale', 'false');
}
thiss.showFilteredMenu();
};
on_sale_wrapper.appendChild(on_sale_checkbox);
on_sale_wrapper.appendChild(document.createTextNode('Show Sale Items Only'));
menu_wrapper.appendChild(on_sale_wrapper);
}*/
var accordion_wrapper = document.createElement('div');
accordion_wrapper.className = 'accordionWrapper';
var first = true;
//menu_by_categories.menu_by_cat.forEach(function(i, v){
var item_count = 0;
for(i in menu_by_categories.menu_by_cat){
var vx = menu_by_categories.menu_by_cat[i];
//console.log(vx);
var cat = document.createElement('div');
//cat.className = first ? 'accordionItem open' : 'accordionItem close';
cat.className = 'accordionItem open'
var h2 = document.createElement('h2');
h2.dataset.category_id = i;
h2.className = 'accordionItemHeading';
h2.appendChild(document.createTextNode(menu_by_categories.categories[i] + ' (' + vx.length + ')'));
cat.appendChild(h2);
var content_panel = document.createElement('div');
content_panel.style.maxHeight = '600px';
//content_panel.style.overflowY = 'scroll';
content_panel.className = 'accordionItemContent';
content_panel.style.position = 'relative';
first = false;
for(var j = 0; j < vx.length; j++){
if(null == vx[j].data.pricing){
continue;
}
var item = document.createElement('div');
item.className = 'menu-item';
item.style.position = 'relative';
/*var item_table = document.createElement('table');
item_table.style.background = '#fff';
item_table.style.width = '100%';
var item_tr = document.createElement('tr');
item_tr.style.background = '#fff';
var img_cell = document.createElement('td');
img_cell.style.width = '135px';*/
console.log(vx[j].data.pricing);
if(typeof vx[j].data.pricing.member_quantity_prices != 'undefined' && typeof vx[j].data.pricing.nonmember_quantity_prices == 'undefined'){
continue;
}
var member_pricing = document.getElementById('cp_member_price_checkbox') || false;
var pricing_mode = member_pricing && member_pricing.checked ? 'member' : 'regular';
if(('1' == vx[j].data.is_on_sale && 'regular' == pricing_mode) || ('1' == vx[j].data.is_on_sale_member && 'member' == pricing_mode)){
var on_sale_span = document.createElement('span');
on_sale_span.style.background = 'red';
on_sale_span.style.color = 'white';
on_sale_span.style.padding = '0px 7px';
on_sale_span.style.position = 'absolute';
on_sale_span.style.top = '-1px';
on_sale_span.style.left = '-1px';
on_sale_span.style.zIndex = '10';
on_sale_span.style.borderRadius = '10px 0px 0px 0px';
on_sale_span.appendChild(document.createTextNode('SALE'));
item.appendChild(on_sale_span);
item.classList.add('sale-item');
}
var img_wrapper = document.createElement('div');
img_wrapper.style.width = '135px';
img_wrapper.style.padding = '5px';
img_wrapper.style.float = 'left';
img_wrapper.className = 'thumb-wrapper';
var img_link = document.createElement('a');
img_link.href = '#holder';
var thumb = document.createElement('img');
thumb.dataset.cat_name = vx[j].data.cat_name;
thumb.dataset.subcat_name = vx[j].data.subcategory_name;
thumb.className = 'cp-cart-thumb';
//console.log(vx[j]);
thumb.src = vx[j].thumb_url;
thumb.onerror = function(){
var thiss = this;
this.onerror = null;
if('' != this.dataset.subcat_name){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.subcat_name.toLowerCase() + '_default.jpg';
}
else if('' != this.dataset.cat_name){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.cat_name.toLowerCase() + '_default.jpg';
}
else{
this.src = 'https://menuserver.canname.nu/default.jpg';
}
this.onerror = function(){
this.src = 'https://menuserver.canname.nu/images/' + this.dataset.cat_name.toLowerCase() + '_default.jpg';
this.onerror = function(){
this.src = 'https://menuserver.canname.nu/default.jpg';
}
}
this.style.width = '125px';
this.style.border = '1pt solid #ccc';
};
//img_link.appendChild(thumb);
img_wrapper.appendChild(thumb);
item.appendChild(img_wrapper);
//img_cell.appendChild(img_wrapper);
//item_tr.appendChild(img_cell)
//var meta_cell = document.createElement('td');
var meta_wrapper = document.createElement('div');
meta_wrapper.clear = 'both';
meta_wrapper.marginLeft = '136px';
meta_wrapper.className = 'meta-wrapper';
var product_name_wrapper = document.createElement('div');
product_name_wrapper.className = 'product-name-wrapper';
product_name_wrapper.style.lineHeight = '110%';
var name_padding = '';
if(vx[j].data.name.length < 30){
const pad_length = 35 - vx[j].data.name.length;
for(var i = 0; i < pad_length; i++){
name_padding += ' ';
}
}
product_name_wrapper.innerHTML = vx[j].data.name + ' ' + name_padding;
meta_wrapper.appendChild(product_name_wrapper);
if(vx[j].data.cat_name && vx[j].data.cat_name.length){
var subcategory_name_wrapper = document.createElement('div');
subcategory_name_wrapper.className = 'subcategory-name-wrapper';
subcategory_name_wrapper.style.fontSize = '13px';
subcategory_name_wrapper.style.fontWeight = '600';
subcategory_name_wrapper.appendChild(document.createTextNode(vx[j].data.cat_name));
if('' != vx[j].data.subcategory_name){
subcategory_name_wrapper.appendChild(document.createTextNode(' - ' + vx[j].data.subcategory_name));
}
}
var brand_wrapper = document.createElement('div');
brand_wrapper.className = 'brand-wrapper';
brand_wrapper.style.fontStyle = 'italic';
brand_wrapper.innerHTML = vx[j].data.brand.length ? vx[j].data.brand : ' ';
meta_wrapper.appendChild(brand_wrapper);
meta_wrapper.appendChild(subcategory_name_wrapper);
if(vx[j].data.species){
var species_wrapper = document.createElement('div');
species_wrapper.className = 'species-wrapper';
species_wrapper.appendChild(document.createTextNode(ucFirst(vx[j].data.species)));
}
else{
var species_wrapper = document.createElement('div');
species_wrapper.className = 'species-wrapper';
species_wrapper.innerHTML = ' ';
}
meta_wrapper.appendChild(species_wrapper);
var price_wrapper = document.createElement('div');
price_wrapper.className = 'price-wrapper';
var quantity_select = document.createElement('select');
quantity_select.className = 'add-to-cart-quantity';
quantity_select.style.width = '40px';
quantity_select.style.padding = '0px';
for(var q = 1; q <= 5; q++){
var opt = document.createElement('option');
opt.value = q;
opt.appendChild(document.createTextNode(q));
quantity_select.appendChild(opt);
}
var member_pricing = document.getElementById('cp_member_price_checkbox') || false;
var pricing_mode = member_pricing && member_pricing.checked ? 'member' : 'regular';
var show_member_pricing = false;
if(pricing_mode == 'member'){
show_member_pricing = true
}
var personalized_pricing = renderPricing(vx[j].data.pricing, vx[j].data.uom, show_member_pricing);
if('member_only' == personalized_pricing){
price_wrapper.appendChild(document.createTextNode('Members Only'));
}
else{
price_wrapper.appendChild(quantity_select);
if(personalized_pricing.length > 1){
var uom = vx[j].data.pricing.uom;
var raw_tiers = personalized_pricing;
// Build a select
var tier_select = document.createElement('select');
tier_select.className = 'tier-select';
for(var k = 0; k < raw_tiers.length; k++){
var opt_text = raw_tiers[k].size + uom + ' $' + raw_tiers[k].price;
var opt_value = raw_tiers[k].size + ':' + uom + ':' + raw_tiers[k].price;
var opt = document.createElement('option');
opt.value = opt_value;
opt.appendChild(document.createTextNode(opt_text));
tier_select.appendChild(opt);
}
price_wrapper.appendChild(tier_select);
if(typeof price_wrapper.dataset.size_uom_price == 'undefined'){
price_wrapper.dataset.size_uom_price = tier_select.value;
//alert('undefinedx');
}
tier_select.onchange = function(){
price_wrapper.setAttribute('data-size_uom_price', this.value);
//price_wrapper.dataset.size_uom_price = this.value;
//alert(price_wrapper.dataset.size_uom_price);
}
}
else{
var single_price = personalized_pricing[0];
var uom = vx[j].data.pricing.uom;
var price_text = ' ' + single_price.size + ' ' + uom + ' $' + single_price.price + ' ';
price_wrapper.appendChild(document.createTextNode(price_text));
price_wrapper.dataset.size_uom_price = single_price.size + ':' + uom + ':' + single_price.price;
}
}
var add_button = document.createElement('button');
add_button.className = 'add-to-cart-button';
add_button.style.padding = '0px';
add_button.dataset.dispensary_id = vx[j].data.dispensary_hash;
add_button.dataset.product_pos_id = vx[j].data.product_pos_id;
add_button.dataset.thumb_url = vx[j].thumb_url;
add_button.dataset.item_name = vx[j].data.name;
add_button.dataset.part_category_id = vx[j].data.part_category_id;
add_button.dataset.tax_category_id = vx[j].data.tax_category_id;
add_button.dataset.vendor_payee_id = vx[j].data.vendor_payee_id;
add_button.dataset.uom_id = vx[j].data.uom_id;
add_button.dataset.subcategory_name = vx[j].data.subcategory_name;
add_button.dataset.cat_name = vx[j].data.cat_name;
add_button.appendChild(document.createTextNode('Add'));
price_wrapper.appendChild(add_button);
/*meta_cell.appendChild(meta_wrapper);
item_tr.appendChild(meta_cell);
item_table.appendChild(item_tr);*/
item.appendChild(meta_wrapper);
if(-1 == vx[j].data.thc_pct && -1 == vx[j].data.cbd_pct){
var potency_wrapper = document.createElement('div');
potency_wrapper.className = 'potency-wrapper';
potency_wrapper.innerHTML = ' ';
}
else{
var potency_wrapper = document.createElement('div');
potency_wrapper.className = 'potency-wrapper';
var thc_potency_text = '';
var cbd_potency_text = '';
if(-1 != vx[j].data.thc_pct){
thc_potency_text = 'THC: ' + vx[j].data.thc_pct + '%';
}
if(-1 != vx[j].data.cbd_pct){
cbd_potency_text = 'CBD: ' + vx[j].data.cbd_pct + '%';
}
var potency_text = thc_potency_text + ' ' + cbd_potency_text;
//var potency_text = 'THC: ' + vx[j].data.thc_pct + '% CBD: ' + vx[j].data.cbd_pct + '%';
potency_wrapper.appendChild(document.createTextNode(potency_text));
potency_wrapper.style.width = '100%';
}
item.appendChild(potency_wrapper);
item.appendChild(price_wrapper);
var description_wrapper = document.createElement('div');
description_wrapper.style.clear = 'both';
description_wrapper.style.fontSize = 'small';
description_wrapper.className = 'cp-description';
var description_source = vx[j].data.description || '';
if(description_source.length > 30){
var description_main_text = description_source.substr(0, 20);
var description_extended_text = description_source;
}
else{
var description_main_text = description_source;
var description_extended_text = false;
}
description_wrapper.appendChild(document.createTextNode(description_main_text));
if(description_extended_text){
var more_link = document.createElement('a');
more_link.style.cursor = 'pointer';
more_link.dataset.description = description_extended_text;
more_link.dataset.title = vx[j].data.name;
more_link.onclick = function(){
var position_div = this.closest('.menu-item');
var popup = document.createElement('div');
popup.className = 'more-popup';
popup.style.borderRadius = '10px';
popup.style.padding = '20px';
popup.style.zIndex = '10001';
popup.style.backgroundColor = '#fff';
popup.style.lineHeight = '120%';
popup.style.fontSize = 'small';
popup.style.top = '0';
popup.style.right = '0';
popup.style.bottom = '0';
popup.style.left = '0';
popup.style.position = 'absolute';
popup.appendChild(document.createTextNode(this.dataset.description));
var close_more_button_wrapper = document.createElement('div');
close_more_button_wrapper.className = 'close-more-button-wrapper';
close_more_button_wrapper.style.height = '60px';
close_more_button_wrapper.style.textAlign = 'center';
close_more_button_wrapper.style.position = 'absolute';
close_more_button_wrapper.style.bottom = '0';
close_more_button_wrapper.style.right = '0';
close_more_button_wrapper.style.left = '0';
var close_more_button = document.createElement('button');
close_more_button.className = 'close-more-button';
close_more_button.appendChild(document.createTextNode('Close'));
close_more_button.style.margin = '0 auto';
close_more_button.onclick = function(){
this.closest('.more-popup').remove();
}
close_more_button_wrapper.appendChild(close_more_button);
popup.appendChild(close_more_button_wrapper);
position_div.appendChild(popup);
//cpInfowindow(this.dataset.title, '' + this.dataset.description + '');
};
more_link.appendChild(document.createTextNode('...more'));
description_wrapper.appendChild(more_link);
}
item.appendChild(description_wrapper);
content_panel.appendChild(item);
}
var content_panel_wrapper = document.createElement('div');
content_panel_wrapper.className = 'content-panel-wrapper';
content_panel_wrapper.style.position = 'relative';
content_panel_wrapper.appendChild(content_panel);
var content_panel_outer_wrapper = document.createElement('div');
content_panel_outer_wrapper.style.overflow = 'hidden';
content_panel_outer_wrapper.appendChild(content_panel_wrapper)
cat.appendChild(content_panel_outer_wrapper);
//alert(content_panel.clientWidth + ' - ' + content_panel.scrollWidth);
accordion_wrapper.appendChild(cat);
item_count++;
};
if(!item_count){
menu_wrapper.appendChild(document.createTextNode('No items match your search'));
}
else{
menu_wrapper.appendChild(accordion_wrapper);
}
return menu_wrapper;
}
this.renderMenu2 = function(menu_by_categories){
/*var menu_wrapper = document.createElement('div');
menu_wrapper.appendChild(document.createTextNode('this is where the menu renders'));
return menu_wrapper;*/
var accordion_wrapper = document.createElement('div');
accordion_wrapper.className = 'accordionWrapper';
var first_item = document.createElement('div');
//first_item.className = 'accordionItem open';
var first = true;
for(const key in menu_by_categories.items){
var cat = document.createElement('div');
cat.className = first ? 'accordionItem open' : 'accordionItem close';
var h2 = document.createElement('h2');
h2.className = 'accordionItemHeading';
h2.appendChild(document.createTextNode(key));
cat.appendChild(h2);
var content_panel = document.createElement('div');
content_panel.className = 'accordionItemContent';
first = false;
console.log(menu_by_categories.items[key]);
for(var i = 0; i < menu_by_categories.items[key].length; i++){
var item = document.createElement('div');
item.className = 'menu-item';
var img_wrapper = document.createElement('div');
img_wrapper.className = 'thumb-wrapper';
var img_link = document.createElement('a');
img_link.href = '#holder';
var thumb = document.createElement('img');
thumb.src = menu_by_categories.items[key][i].thumb_url + '?' + Math.floor(Math.random() * 1000);
img_link.appendChild(thumb);
img_wrapper.appendChild(img_link);
item.appendChild(img_wrapper);
var meta_wrapper = document.createElement('div');
meta_wrapper.className = 'meta-wrapper';
var product_name_wrapper = document.createElement('div');
product_name_wrapper.className = 'product-name-wrapper';
product_name_wrapper.appendChild(appendChild(document.createTextNode(menu_by_categories.items[key][i].name)));
meta_wrapper.appendChild(product_name_wrapper);
var species_wrapper = document.createElement('div');
species_wrapper.className = 'species-wrapper';
species_wrapper.appendChild(document.createTextNode(menu_by_categories.items[key][i].species));
meta_wrapper.appendChild(species_wrapper);
var potency_wrapper = document.createElement('div');
potency_wrapper.className = 'potency-wrapper';
var potency_text = 'THC: ' + menu_by_categories.items[key][i].thc_pct + '% CBD: ' + menu_by_categories.items[key][i].cbd_pct + '%';
potency_wrapper.appendChild(potency_text);
meta_wrapper.appendChild(potency_wrapper);
var price_wrapper = document.createElement('div');
price_wrapper.className = 'price-wrapper';
var price_text;
if(typeof menu_by_categories.items[key][i].std_price != 'undefined' && '' != menu_by_categories.items[key][i].std_price){
price_text += 'Price ' + menu_by_categories.items[key][i].std_price + ' ';
}
if(typeof menu_by_categories.items[key][i].member_price != 'undefined' && '' != menu_by_categories.items[key][i].member_price){
price_text += 'Member Price ' + menu_by_categories.items[key][i].member_price + ' ';
}
price_wrapper.appendChild(document.createTextNode(price_text));
meta_wrapper.appendChild(price_wrapper);
item.appendChild(meta_wrapper);
content_panel.appendChild(item);
}
cat.appendChild(content_panel);
accordion_wrapper.appendChild(cat);
}
return accordion_wrapper;
};
this.setupFilters = async function(thc_minmax, price_minmax){
var flt = new CpFilters();
var drawn_filters = await flt.drawFilters(thc_minmax, price_minmax);
console.log('drawn fltrs');
console.log(drawn_filters)
document.getElementById('cp_filter_home').innerHTML = '';
document.getElementById("cp_filter_home").appendChild(drawn_filters);
thiss.setupAccordion(thc_minmax, price_minmax);
}
this.setupAccordion = function(thc_minmax, price_minmax, redraw_filters){
var accItem = document.getElementsByClassName('accordionItem');
var accHD = document.getElementsByClassName('accordionItemHeading');
for (i = 0; i < accHD.length; i++) {
accHD[i].addEventListener('click', toggleItem, false);
//accHD[i].addEventListener('click', function(){fixMenu(this, thc_minmax, price_minmax);});
}
setMenu(accHD[0], thc_minmax, price_minmax);
function setMenu(accHeader, thc_minmax, price_minmax){
var cat_id = accHeader.dataset.category_id;
//sessionStorage.thc_pct = 0;
//var flt = new CpFilters();
//var drawn_filters = flt.drawFilters(cat_id, thc_minmax, price_minmax);
//document.getElementsByClassName('filters-outer')[0].innerHTML = '';
//document.getElementsByClassName('filters-outer')[0].appendChild(drawn_filters);
var filters = document.querySelectorAll('.filter-wrapper input[type="checkbox"]');
var medrec_singular = document.querySelectorAll('input[name="medrec_checkbox"]');
if(medrec_singular.length === 1){
medrec_singular[0].checked = true;
medrec_singular[0].readonly = true;
}
var new_filters_to_set = [];
for(var i = 0; i < filters.length; i++){
if(typeof sessionStorage.filters != 'undefined'){
var applied_filters = JSON.parse(sessionStorage.filters);
sessionStorage.thc_pct = sessionStorage.thc_pct || 0;
}
else{
var applied_filters = [];
//sessionStorage.thc_pct = 0;
}
if(applied_filters.indexOf(filters[i].value) != -1){
filters[i].checked = true;
}
filters[i].onchange = function(){
var new_filters = document.querySelectorAll('.filters-outer input[type="checkbox"]:checked');
console.log('new filters' + new_filters.length);
var new_filters_to_set = [];
for(var i = 0; i < new_filters.length; i++){
new_filters_to_set.push(new_filters[i].value);
}
sessionStorage.setItem('filters', JSON.stringify(new_filters_to_set));
sessionStorage.thc_pct = sessionStorage.thc_pct || 0;
main_menu.showFilteredMenu();
var thc_display_obj = document.getElementById('thc_displayx');
thc_display_obj.innerHTML = document.getElementById('cp_thc_slider').value;
}
}
}
function fixMenu(this3, thc_minmax, price_minmax){
/*var flt = new CpFilters();
var drawn_filters = flt.drawFilters(this3.dataset.category_id, thc_minmax, price_minmax);
document.getElementsByClassName('filters-outer')[0].innerHTML = '';
document.getElementsByClassName('filters-outer')[0].appendChild(drawn_filters);*/
var medrec_singular = document.querySelectorAll('input[name="medrec_checkbox"]');
if(medrec_singular.length === 1){
medrec_singular[0].checked = true;
medrec_singular[0].readonly = true;
}
sessionStorage.setItem('filters', JSON.stringify([]));
//sessionStorage.thc_pct = 0;
var applied_filters = [];
console.log('applied filters');
console.log(applied_filters);
var filters = document.querySelectorAll('.filters-outer input[type="checkbox"]');
for(var i = 0; i < filters.length; i++){
if(applied_filters.indexOf(filters[i].value) != -1){
filters[i].checked = true;
}
filters[i].onchange = function(){
var new_filters = document.querySelectorAll('.filters-outer input[type="checkbox"]:checked');
console.log('new filters' + new_filters.length);
var new_filters_to_set = [];
for(var i = 0; i < new_filters.length; i++){
new_filters_to_set.push(new_filters[i].value);
}
sessionStorage.setItem('filters', JSON.stringify(new_filters_to_set));
main_menu.showFilteredMenu();
}
}
}
function toggleItem() {
var itemClass = this.parentNode.className;
/*for (i = 0; i < accItem.length; i++) {
accItem[i].className = 'accordionItem close';
}*/
if (itemClass == 'accordionItem close') {
this.parentNode.className = 'accordionItem open';
}
else{
this.parentNode.className = 'accordionItem close';
}
}
};
var thiss = this;
main_menu = this;
}
/*var cm = new CannaMenu();
cm.showDefaultMenu();
setTimeout(function(){
//cm.setupAccordion();
}, 3000);*/
var cm;
if(1){
sessionStorage.setItem('filters', JSON.stringify([]));
var head = document.getElementsByTagName('head')[0];
var lato_preconnect = document.createElement('link');
lato_preconnect.rel = 'preconnect';
lato_preconnect.href = 'https://fonts.gstatic.com';
head.appendChild(lato_preconnect);
var lato = document.createElement('link');
lato.rel = 'stylesheet';
lato.href = 'https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap';
head.appendChild(lato);
var ss = document.createElement('link');
ss.rel = 'stylesheet';
ss.href = 'https://menuserver.canname.nu/css/menu.css?1';
head.appendChild(ss);
document.addEventListener("DOMContentLoaded", function(event) {
cannamenu_div = document.getElementById("cannamenu-div");
cannamenu_div.style.fontFamily = "'Lato', sans-serif";
cm = new CannaMenu();
cm.showDefaultMenu();
});
}