<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">var Closed=true,Ahead=1,geoF=0,tblhash='';

var dFee=0,dDist=0,dTime=0,oTip=0,spot='',seatid=0,sint;
var tblPass=0,qrtd_t;
var myAddress=[],myInv={},lastInv=0,gotInv=0;
var ccV = {};

var isFuture = null;//exists(!=null) if using onlinetheme=2
var itemrechtml = "";

ccV.cards = {
	'mc':'5[1-5][0-9]{14}',
	'ec':'5[1-5][0-9]{14}',
	'vi':'4(?:[0-9]{12}|[0-9]{15})',
	'ax':'3[47][0-9]{13}',
	'dc':'3(?:0[0-5][0-9]{11}|[68][0-9]{12})',
	'bl':'3(?:0[0-5][0-9]{11}|[68][0-9]{12})',
	'di':'6011[0-9]{12}',
	'jcb':'(?:3[0-9]{15}|(2131|1800)[0-9]{11})',
	'er':'2(?:014|149)[0-9]{11}'
};
ccV.validate = function(value) {
	value = String(value).replace(/\D/g,'');
	var cardinfo = ccV.cards, results = [];
	for(var p in cardinfo){
		if(value.match('^' + cardinfo[p] + '$')){
			results.push(p);
		}
	}
	return results.length ? results.join('|') : false;
};
function htmlDecode(input){
	var e = document.createElement('div');
	e.innerHTML = input;
	return e.childNodes[0].nodeValue;
}
function qrtdTimer(){
	if ( !$('#msg').hasClass('open') ) {
		console.log('no Timer');
		clearTimeout(qrtd_t);
		return;
	}
	qrtd_t=setTimeout(function(){
		var t=$('#qrTD').text().split(/:/);
		var m=Number(t[0]);
		var s=Number(t[1]);
		s--;
		if ( s &lt; 0 ) {
			s=59;
			if ( m &gt; 0 ) m--;
		}
		if ( m == 0 &amp;&amp; s == 0 ) clearTimeout(qrtd_t);
		else qrtdTimer();
		m='0'+m;
		s='0'+s;
		m=m.slice(-2);
		s=s.slice(-2);
		$('#qrTD').text(m+' : '+s);
	},1000);
}
function geoFail(){
	geoF=1;
	console.log(' geoFail');
	$('#QRoff').removeClass('hide');
	$('#QRoff b').removeClass('hide');
	$('#tbl a').addClass('hide');
	$('#tbl label.col').addClass('hide');
	$('#tbl').modal({dismissible:false});
	$('#tbl').modal('open');
	return false;
}
function kpDist(lat1, lon1, lat2, lon2, unit) {
	//if ( typeof lat1 != 'undefined' ) console.log('lat1:'+lat1);
	//if ( typeof lon1 != 'undefined' ) console.log('lon1:'+lon1);
	if ((lat1 == lat2) &amp;&amp; (lon1 == lon2)) {
		return 0;
	} else {
		var radlat1 = Math.PI * lat1/180;
		var radlat2 = Math.PI * lat2/180;
		var theta = lon1-lon2;
		var radtheta = Math.PI * theta/180;
		var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
		if (dist &gt; 1) dist = 1;
		dist = Math.acos(dist);
		dist = dist * 180/Math.PI;
		dist = dist * 60 * 1.1515;
		if (unit=="K") { dist = dist * 1.609344 }
		if (unit=="N") { dist = dist * 0.8684 }
		return dist;
	}
}
function isMax(){
	if ( tbl != '' )  {
		var max=0;
		$('#list li').each(function(){
			max+=Number($(this).find('b.q').text());
		});	
		if ( max &gt;= qrm ) {
			var h="&lt;div class='row center-align'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+="&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;h5&gt;Per order limit &lt;b&gt;"+qrm+"&lt;/b&gt; reached.&lt;br&gt;&lt;br&gt;Please checkout first.&lt;/h5&gt;&lt;/p&gt;";
			h+="&lt;/div&gt;";
			$('#msg .modal-content').html(h);
			$('#msg').modal({dismissible:false});
			$('#msg').modal('open');
			return true;
		} else return false;
	}
	return false;
}
async function isClosed() {
	const timeUrl = 'https://' + site + '.kwickmenu.com/time.php';
	try {
		const response = await fetch(timeUrl);

		if (!response.ok) {
			throw new Error(`Network response was not ok. Status: ${response.status}`);
		}
		// Get the Unix timestamp from the server response
		const serverUnixTime = await response.text();

		// Ensure the response is a valid number
		if (!isNaN(serverUnixTime)) {

			const unixTimestamp = parseInt(serverUnixTime, 10);
			const utcDate = new Date(unixTimestamp * 1000);
			const offsetInMs = timeZoneOffset * 60 * 60 * 1000; // Convert hours to milliseconds
			const targetDate = new Date(utcDate.getTime() + offsetInMs);
			//console.log("Kwickmenu server time:", targetDate.toISOString());
			const targetISOString = targetDate.toISOString();
			const targetHour = parseInt(targetISOString.substring(11, 13), 10);
			const targetMinute = parseInt(targetISOString.substring(14, 16), 10);
			const targetSecond = parseInt(targetISOString.substring(17, 19), 10);
			const w = targetDate.getUTCDay();
			const h = targetHour * 3600 + targetMinute * 60 + targetSecond;
			processTime(w, h);
		} else {
			var d = new Date();
			var w = d.getDay();
			var h = d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds();
			processTime(w, h);
			//console.log("Using local device time: " + d);
		}
	} catch (error) {
		var d = new Date();
		var w = d.getDay();
		var h = d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds();
		processTime(w, h);
		//console.log("Using local device time: ", d);
	}
}
function processTime(w, h) {
	//console.log('processTime called');
	var end = 'NaN';
	for (var i = 0; i &lt; Bhour[w].length; i++) {
		var b = Bhour[w][i][0].split(/:/);
		var begin = b[0] * 3600 + b[1] * 60;
		var e = Bhour[w][i][1].split(/:/);
		end = e[0] * 3600 + e[1] * 60;
		if (begin == 'NaN' || end == 'NaN') {
			Ahead = 0;
			break;
		}
		//console.log('i:'+i+ ' h:'+h +' begin:'+begin+' end:'+ end);
		if (h &gt; begin - 30 &amp;&amp; h &lt; end - 10) {
			Closed = false;
			$('#closeMsg').hide();
			$('#asap').removeClass('disabled');
			const overlays = document.querySelectorAll('.loadingOverlay');
			overlays.forEach(overlay =&gt; {
				overlay.remove(); // Remove the overlay from the DOM
			});
			console.log("Store is open.");
			return false;
		}
	}
	h &lt; end - 10 ? Ahead = 1 : Ahead = 0;
	if (nopreorders) Ahead = 0;
	if (tbl != '') {
		Closed = false;
		const overlays = document.querySelectorAll('.loadingOverlay');
		overlays.forEach(overlay =&gt; {
			overlay.remove(); // Remove the overlay from the DOM
		});
		console.log("Store is open.");
		return false;
	} else {
		Closed = true;
		$('#asap').addClass('disabled');
		$('#closeMsg').show();
		const overlays = document.querySelectorAll('.loadingOverlay');
		overlays.forEach(overlay =&gt; {
			overlay.remove(); // Remove the overlay from the DOM
		});
		console.log("Store is closed.");
		return true;
	}
}

function myTime(){
	var week=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
	var d = new Date();
	var m=d.getMonth()+1;
	var day=d.getDate();
	var w=d.getDay();
	$('#day0').attr({n:day,w:w,d:''});
	for(var i=1;i&lt;6;i++) {
		var n = new Date();
		n.setDate(day+i)
		var w=n.getDay();
		var t=week[w];
		var nday=n.getDate();
		var m=n.getMonth()+1;
		$('#day'+i).attr({t:t,n:nday,w:w,d:m+'/'+nday});
	}
	if ( future == 0 ) 
		$('#timedate').hide();
	else
		$('#timedate').show();
}
function myOpen(){
	return;
}
function errImgs(){
	$('img').on('error',function(){ $(this).attr('src','/c.gif'); });
}


function myTax0(){
        console.log(' ---myTax0');
        var c=0;
        tax0=0;
        $('#list li').each(function(){
                iidx=$(this).attr('data-iid');
                if ( /g/.test(iidx) ) {
                        var id=iidx.toString().split(/g/);
                        miid=id[0];
                } else if ( /o/.test(iidx) ) {
                        var id=iidx.toString().split(/o/);
                        miid=id[0].replace(/-0$/,'');
                } else if ( /-/.test(iidx) ) {
                        var id=iidx.toString().split(/-/);
                        miid=id[0].replace(/-0$/,'');
                } else {
                        miid=iidx;
                }
                var tax1=Iids[miid]['item_taxable'];
                var tax2=Iids[miid]['item_tax2'];
                px=Number($(this).find('b.p').text());
                tax0+=(px*taxrate*tax1 + px*tax2rate*tax2)/100;
        });
}

function mySum(pro){
	console.log(' ---mySum');
	var c=0,sub=0,tax3=0;
	tax=0;
    total=0;
	$('#list li').each(function(){
		iidx=$(this).attr('data-iid');
		console.log('iidx: ');
		console.log(iidx);
		if ( /g/.test(iidx) ) {
			var id=iidx.toString().split(/g/);
			miid=id[0];
			console.log(' 1 miid: '+miid);
		} else if ( /o/.test(iidx) ) {
			var id=iidx.toString().split(/o/);
			miid=id[0].replace(/-0$/,'');
			console.log(' 2 miid: '+miid);
		} else if ( /-/.test(iidx) ) {
			var id=iidx.toString().split(/-/);
			miid=id[0].replace(/-0$/,'');
			console.log(' 3 miid: '+miid);
		} else {
			miid=iidx;
			console.log(' 4 miid: '+miid);
		}
		var tax1=Iids[miid]['item_taxable'];
		var tax2=Iids[miid]['item_tax2'];
		px=Number($(this).find('b.p').text());
		tax+=(px*taxrate*tax1 + px*tax2rate*tax2)/100;
		logit('tax1:' + tax1 +' tax2:'+tax2+' tax:'+tax);
	    
        var quantityText = $(this).find('b.q').text().trim(); // Trim whitespace
        var quantity = Number(quantityText);	
		c+=quantity;
        //=Number($(this).find('b.q').text());
		sub+=Number($(this).find('b.p').text());
		logit('c sub:' + c +' '+sub);
	});
	tax0=tax;
	if ( tax3rate &gt; 0 ) {
        if(tax3rate&gt;0.2){
		    tax3=tax3rate*(surcharge+100)/100; 
        }else {
		    tax3=sub*tax3rate*(surcharge+100)/100; 
        }
		$('#tax3').attr({v:tax3.toFixed(2)}).show();
		sub+=tax3;
	} else {
		$('#tax3').attr({v:0}).hide();
	}
	if ( typeof pro == 'undefined' ) {
		if ( discountCode == 0 &amp;&amp; sub &gt; discountMin &amp;&amp; discountRate &gt; 0 ) discount=discountRate;
		else if ( discountCode == 0 &amp;&amp; sub &gt; discountMin &amp;&amp; discountValue &gt; 0 ) discount=-discountValue;
		else discount=0;
	}
	logit('   mySum 2:  tax:'+tax + ' total:'+total);
	if ( discount &gt; 0 ) {
		var dist=sub*discount/100;

        logit('discount exists=' + $('#discount').length);
		$('#discount').attr({v:dist.toFixed(2)});
        $('#discount').hide().css('display', 'list-item');
		var tax=(sub-dist)*taxrate/100;
		if ( surcharge &gt; 0 ) tax+=(sub-dist+tax+kFee)*surcharge/100;
		var total=sub-dist+tax+kFee;
	} else if ( discount &lt; 0 ) {
		var dist=discountValue;
		$('#discount').attr({v:dist.toFixed(2)}).show();
		var tax=(sub-dist)*taxrate/100;
		if ( surcharge &gt; 0 ) tax+=(sub-dist+tax+kFee)*surcharge/100;
		var total=sub-dist+tax+kFee;
	} else {
		//if(site !='quartersteahouse') tax=sub*taxrate/100;
		if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee+dFee)*surcharge/100;
		$('#discount').attr({v:0}).hide();
		var total=sub+tax+kFee;
	}
	logit('   mySum 3:  tax:'+tax +' total:'+total);
	if ( tiprate &gt; 0 ) {
		var tip=sub*tiprate/100;
		$('#tip').attr({v:tip.toFixed(2)}).show();
	} else 
		var tip=Number($('#tip').attr('v'));
	if ( !isNaN(tip)) total+=tip;
	total+=dFee;
	if(c==0) {sub=0;total=0;}
	$('#mobcart,#cart').attr({v:c});
	$('#sub').attr({v:sub.toFixed(2)});
	if ( kFee &gt; 0 &amp;&amp; $('#kfee').length == 0 ) {
		var taxfee=tax+kFee;
		$('#tax').attr({v:taxfee.toFixed(2)});
	} else {
		$('#tax').attr({v:tax.toFixed(2)});
	}
	logit('   mySum 4:  tax:'+tax + ' total:'+total);
	$('#total,#displaytotal').attr({v:total.toFixed(2)});
	if ( sub == 0 ) {
		$('#empty').show();
		$('#sum,#emptycart').hide();
		$('#po2,#checkout').addClass('disabled').attr({v:'$'+total.toFixed(2)});
                    console.log('DISABLE 11 checkout ****');
		if ( tbl != '' ) $('#checkout').removeClass('disabled'); 
		localStorage.setItem('cart','');
		clearTimeout(sint);
		if ( tblid &gt; 0 &amp;&amp; qrtocfg['share'] == 1 ) {
			clearTimeout(sint);
			myShare(2);
		}
	} else {
		$('#empty').hide();
		$('#sum,#emptycart').show();
		$('#po2,#checkout').attr({v:'$'+total.toFixed(2)});
	    logit('   mySum 5:  tax:'+tax + ' add to checkout total:'+total);
		if ( pro == 1 ) console.log('promo');
		else mySave();
	}
    logit('   mySum end:  tax:'+tax + ' total:'+total);
}

function mySave(){
	console.log('---mySave called');
	var d=new Date(),c=0,t=0,s='',a='';
	$('#list li').each(function(){ c+=Number($(this).children('.q').text()); });
	var sub=Number($('#sub').attr('v'));
	var tax=Number($('#tax').attr('v'));
	var total=Number($('#total').attr('v'));
    logit('  --mySave 1:  tax:'+tax +' total:'+total);
	if(tblid&gt;0){
		console.log('mySave tblid&gt;0');
	}else if ( $('#pickup').hasClass('off') || $('#pickup').length==0 ) {
		var d=new Date();
		var h=d.getHours()*3600+d.getMinutes()*60+d.getSeconds();
		if ( dDist == 0 || postmates&gt;0 ) {
			if ( postmates&gt;0){
				console.log('---------dist 0 doordash ajax called dist=0');
				var address=$('#checkout').attr('a');
				var ad=JSON.parse($('#checkout').attr('ad'));
				var address = ad.address+','+ad.city+','+ad.state+','+ad.zip;
				console.log('origin:'+storeAddress);
				console.log('  dest:'+address);
				console.log('unit  : '+unit);
				console.log('site  : '+site);
				mode='quote';
				$.ajax({type:'POST',url:'ajaxdoordash.php',data:{origin:storeAddress,dest:address,unit:unit,mode:mode, site:site, where:'mySave'},success:function(data1){
					console.log('dist 0 doordash ajax called success');
					if(!data1){
						$('#faraddr').show();
						//need to cancel delivery, switch to pickup order
						console.log('returned false from postmate');
					}else {
						data2=JSON.parse(data1);
						console.log(data2);
						dfee=data2['fee']/100;
						kFee=kFeeo+dfee;
						//if(postmates&gt;1) kFee=kFee-3;
						//if(site=='kpqa58demo') kFee=6;
				console.log('kFee:'+kFee);
				console.log('kFeeo:'+kFeeo);
						if(kFeeo==0) kFee+=2;
						else kFee+=1;
						kFee=postmates;
						$('#kfee').attr({v:kFee.toFixed(2)}).show();
						dfee=0;
						dFee=dfee;
						delivery_asap=data2['duration']+' mins.';
						$('#delivery').attr({v:delivery_asap});
						console.log('dist 0 doordash dfee:'+dfee +' kfee:'+kFee +' delivery_asap:'+delivery_asap);
						tax=sub*taxrate/100;
						if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee)*surcharge/100;
						total=sub+tax+dfee+kFee;
				console.log('x total:'+total);
						if(c==0) {sub=0; tax=0; total=0;}
						$('#total,#displaytotal').attr({v:total.toFixed(2)});
						$('#checkout').attr({v:total.toFixed(2)}).show();
					}
				}});
			}else if ( postmates==99){
				console.log('dist 0 postmates ajax called dist=0');
				var address=$('#checkout').attr('a');
				var ad=JSON.parse($('#checkout').attr('ad'));
				var address = ad.address+','+ad.city+','+ad.state+','+ad.zip;
				console.log('origin:'+storeAddress);
				console.log('  dest:'+address);
				mode='quote';
				$.ajax({type:'POST',url:'ajaxpostmates.php',data:{origin:storeAddress,dest:address,mode:mode},success:function(data1){
					console.log('dist 0 postmates ajax called success');
					if(!data1){
						$('#faraddr').show();
						$('#addaddr').hide();
						//need to cancel delivery, switch to pickup order
						console.log('returned false from postmate');
					}else {
						data2=JSON.parse(data1);
						console.log(data2);
						dfee=data2['fee']/100;
						kFee=kFeeo+dfee;
						if(postmates&gt;1) kFee=kFee-postmates;
						if(kFeeo==0) kFee+=2;
						else kFee+=1;
						$('#kfee').attr({v:kFee.toFixed(2)}).show();
						dfee=0;
						dFee=dfee;
						delivery_asap=data2['duration']+' mins.';
						$('#delivery').attr({v:delivery_asap});
						console.log('dist 0 postmates dfee:'+dfee +' kfee:'+kFee +' delivery_asap:'+delivery_asap);
						tax=sub*taxrate/100;
						if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee)*surcharge/100;
						total=sub+tax+dfee+kFee;
						if(c==0) {sub=0; tax=0; total=0;}
						$('#total,#displaytotal').attr({v:total.toFixed(2)});
						$('#checkout').attr({v:total.toFixed(2)}).show();
					}
				}});
			}else if ( dform &lt; 0 ) {
				dFee=Math.abs(sub*dform/100);
				$('#dfee').attr({v:dFee.toFixed(2)}).show();
				if ( dtax == 1 ) {
					tax=(sub+dFee)*taxrate/100;
					if ( surcharge &gt; 0 ) tax+=(sub+dFee+tax+kFee)*surcharge/100;
					total=sub+dFee+tax+kFee;
					$('#tax').attr({v:tax.toFixed(2)});	
					$('#total,#displaytotal').attr({v:total.toFixed(2)});	
				} else {
					if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee+dFee)*surcharge/100;
					total=sub+tax+dFee+kFee;
					$('#total,#displaytotal').attr({v:total.toFixed(2)});	
				}
				console.log('dfee percentage dFee:'+dFee);
				if ( onlineTip &gt; 5 ) $('#tiprow a.tip[v='+onlineTip+']').trigger('click');
			}else{
				//delivery order
				x1=$('#checkout').attr('ad');
				if(x1=='') console.log('to get address');
				//$('#delivery').trigger('select');
				searchAddr=$('#checkout').attr('ad');
				var ad=JSON.parse($('#checkout').attr('ad'));
				var myDistanceService = new google.maps.DistanceMatrixService();
				if ( ad.geo.lat != '' ) var dest = new google.maps.LatLng(ad.geo.lat,ad.geo.lng);
				else var dest=ad.address+','+ad.city+' '+ad.state;

				myDistanceService.getDistanceMatrix({origins:[storeAddress],destinations:[dest],travelMode:google.maps.TravelMode.DRIVING,unitSystem:google.maps.UnitSystem.IMPERIAL},function(response,status){
						if (status == google.maps.DistanceMatrixStatus.OK) {
							dDist = response.rows[0].elements[0].distance.value * 0.000621371;
							dTime = response.rows[0].elements[0].duration.value / 60;
							if(dDist==0){
								googleres=JSON.stringify(response);
								if ( typeof searchAddr == 'undefined' ) searchAddr='address unknown 1';
								//$.ajax({type:'POST',url:'ajaxdist0.php',data:{site:site,addr:searchAddr,dist:dDist,res:googleres,case:1},success:function(data){ }});
							}
						} else {
							dDist = 2;
							dTime = 5;
						}
						logit('api called dist 0 a dDist:'+dDist+' dTime:'+dTime);
						if ( typeof dform == 'array' || typeof dform == 'object' ) {
							$('#dfee').show();
							var dfee=0,mfee=0;
							if ( dDist &gt;= 0 ) {
								for( var i in dform ) {
									if ( dform[i].c &gt; mfee ) mfee=dform[i].c;
									if ( dDist &gt;= dform[i].a) dfee=Math.max(Number(dform[i].c),dfee);
									if ( dDist &gt;= dform[i].a &amp;&amp; dDist &lt; dform[i].b ) {
										dfee=dform[i].c;
										break;
									}
								}
								//if ( dfee == 0 ) dfee=dfeemini;
								dFee=dfee;
								$('#dfee').attr({v:dfee.toFixed(2)}).show();
								if ( dtax == 1 ) {
									tax=(sub+dfee)*taxrate/100;
								} else {
									tax=sub*taxrate/100;
								}
                                if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee+dfee)*surcharge/100;
                                total=sub+dfee+tax+kFee;
                                $('#tax').attr({v:tax.toFixed(2)});	
                                $('#total,#displaytotal').attr({v:total.toFixed(2)});	
							} else {
								if ( dfee == 0 ) dfee=dfeemini;
								dFee=dfee;
								$('#dfee').attr({v:dfee.toFixed(2)}).show();
								if ( dtax == 1 ) {
									tax=(sub+dfee)*taxrate/100;
									if ( surcharge &gt; 0 ) tax+=(sub+dfee+tax+kFee)*surcharge/100;
									total=sub+dfee+tax+kFee;
									$('#tax').attr({v:tax.toFixed(2)});	
									$('#total,#displaytotal').attr({v:total.toFixed(2)});	
								} else {
									tax=sub*taxrate/100;
									if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee+dfee)*surcharge/100;
									total=sub+tax+dfee+kFee;
									$('#total,#displaytotal').attr({v:total.toFixed(2)});	
								}
							}
							if ( dFee == 0 ) $('#dfee').hide();
						} else if ( Number(dform) &gt; 0 ) {
							dFee=Number(dform);
							logit('1xdFee:'+dFee);
							$('#dfee').attr({v:dFee.toFixed(2)}).show();
							if ( dtax == 1 ) {
								tax=(sub+dFee)*taxrate/100;
								//if ( surcharge &gt; 0 ) tax+=(sub+dFee+tax+kFee)*surcharge/100;
								if ( typeof tax0 === 'undefined'){
									tax0=tax;
									console.log('tax0 undefined!!!!!');
								}
								if ( surcharge &gt; 0 ) tax=tax0+(sub+tax0+dFee+kFee)*surcharge/100;
							} else {
								if ( surcharge &gt; 0 ) tax+=(sub+tax+kFee+dfee)*surcharge/100;
							}
                            total=sub+dFee+tax+kFee;
                            $('#tax').attr({v:tax.toFixed(2)});	
                            $('#total,#displaytotal').attr({v:total.toFixed(2)});	
						}
						logit('api called dist 0 b. dist:'+dDist + ' dmax:'+dMax);
						if ( onlineTip &gt; 5 ) $('#tiprow a.tip[v='+onlineTip+']').trigger('click');
				});
			}
		}
		if(postmates&gt;0) {
			//skip delivery fee calc
			//console.log('3rd party delivery show checkout price: dDist:'+dDist+' Real dFee='+dFee);
		} else if ( typeof dform == 'array' || typeof dform == 'object' ) {
			//console.log(dform);
			$('#dfee').show();
			var dfee=0,mfee=0;
			if ( dDist &gt;= 0 ) {
				for( var i in dform ) {
					if ( dform[i].c &gt; mfee ) mfee=dform[i].c;
					if ( dDist &gt;= dform[i].a) dfee=Math.max(Number(dform[i].c),dfee);
					if ( dDist &gt;= dform[i].a &amp;&amp; dDist &lt; dform[i].b ) {
						dfee=dform[i].c;
						break;
					}
				}
				//if ( dfee == 0 ) dfee=dfeemini;
				dFee=dfee;
				$('#dfee').attr({v:dfee.toFixed(2)}).show();
				if ( dtax == 1 ) {
					tax=(sub+dfee)*taxrate/100;
				} else {
					tax=sub*taxrate/100;
				}
                if ( surcharge &gt; 0 ) tax+=(sub+dfee+tax+kFee)*surcharge/100;
                total=sub+dfee+tax+kFee;
                $('#tax').attr({v:tax.toFixed(2)});	
                $('#total,#displaytotal').attr({v:total.toFixed(2)});	
			} else {
				if ( dfee == 0 ) dfee=dfeemini;
				dFee=dfee;
				$('#dfee').attr({v:dfee.toFixed(2)}).show();
				if ( dtax == 1 ) {
					tax=(sub+dfee)*taxrate/100;
				} else {
					tax=sub*taxrate/100;
				}
                if ( surcharge &gt; 0 ) tax+=(sub+dfee+tax+kFee)*surcharge/100;
                total=sub+dfee+tax+kFee;
                $('#tax').attr({v:tax.toFixed(2)});	
                $('#total,#displaytotal').attr({v:total.toFixed(2)});	
			}
			if ( dFee == 0 ) $('#dfee').hide();
		} else if ( dform &gt; 0 ) {
			dFee=Number(dform);
							logit('2xdFee:'+dFee);
			//console.log('dform='+dform);
			$('#dfee').attr({v:dFee.toFixed(2)}).show();
			if ( dtax == 1 ) {
				if ( typeof tax0 === 'undefined'){
					tax0=tax;
					console.log('tax0 undefined!!!!!');
				}
				tax=tax0+dFee*taxrate/100;
				if ( surcharge &gt; 0 ) tax+=(sub+dFee+tax+kFee)*surcharge/100;
				total=sub+dFee+tax+kFee;
				$('#tax').attr({v:tax.toFixed(2)});	
				$('#total,#displaytotal').attr({v:total.toFixed(2)});	
			} else {
				if ( typeof tax0 === 'undefined'){
					tax0=tax;
					console.log('tax0 undefined!!!!!');
				}
				if ( surcharge &gt; 0 ) tax=tax0+(sub+tax0+dFee+kFee)*surcharge/100;
				total=sub+tax+dFee+kFee;
				$('#tax').attr({v:tax.toFixed(2)});	
				$('#total,#displaytotal').attr({v:total.toFixed(2)});	
			}
		}
		//console.log('dDist:'+dDist+' Real dFee='+dFee);
		if ( Lunch &gt; 0 ) {
			if ( h &gt; Lunch ) {
				if ( sub &gt;= miniD ) {
					$('#checkout').removeClass('disabled');
					$('#notice').text('').hide();
				} else {
					$('#checkout').addClass('disabled');
					$('#notice').text('Minimum $'+miniD.toFixed(2)).show();
                    console.log('DISABLE 12 checkout ****');
				}
			} else {
				if ( sub &gt;= miniL ) {
					$('#checkout').removeClass('disabled');
					$('#notice').text('').hide();
				} else {
					$('#checkout').addClass('disabled');
                    console.log('DISABLE 13 checkout ****');
					$('#notice').text('Minimum $'+miniL.toFixed(2)).show();
				}
			}
		} else {
			if ( sub &gt;= miniL ) {
				$('#checkout').removeClass('disabled');
				$('#notice').text('').hide();
			} else {
				$('#checkout').addClass('disabled');
                    console.log('DISABLE 14 checkout ****');
				$('#notice').text('Minimum $'+miniL.toFixed(2)).show();
			}
		}
		t=4;
		s=$('#delivery').attr('v');
		a=$('#checkout').attr('a');
		//$('#po2').text('PLACE DELIVERY ORDER');
        logit('  --mySave 2:  tax:'+tax + ' total:'+total);

	}else{
		//console.log(' mySave --???');
	}

	//if ( $('#dinein').length == 1 || ($('#delivery').hasClass('off') || $('#delivery').length == 0) ) 
	if ( ( $('#delivery').length == 0) || $('#delivery').hasClass('off') ) {
		//console.log('xxx dinein or pickup order');
		$('#notice').text('').hide();
		t=2;
		s=$('#pickup').attr('v');
		//$('#po2').text('PLACE PICKUP ORDER');
		if ( $('#dfee').is(':visible') ) {
			var dfee=Number($('#dfee').attr('v'));
			if ( dtax == 1 ) {
				var dt=dfee*taxrate/100;
				tax-=dt;
				total-=(dt+dfee);
			} else {
				total-=dfee;
			}
			$('#dfee').attr({v:0}).hide();
			$('#tax').attr({v:tax.toFixed(2)});
			$('#total,#displaytotal').attr({v:total.toFixed(2)});	
		}
		if ( sub &gt; 0 )
			$('#checkout').removeClass('disabled');
		else {
			$('#checkout').addClass('disabled');
                    console.log('DISABLE 15 checkout ****');
			total=0;
		}
	}

	$('#checkout').removeClass('po');

	$('#po2,#checkout').attr({v:'$'+total.toFixed(2)});
	var cart={mtime:d.getTime(),htm:$('#custom').html(),c:c,t:t,s:s,a:a}
	localStorage.setItem('cart',JSON.stringify(cart));
	if ( tblid &gt; 0 &amp;&amp; qrtocfg['share'] == 1 ) {
		clearTimeout(sint);
		myShare(1);
	}
    logit('  --mySave end:  tax:'+tax + ' total:'+total);
}
function myShare(get){
	console.log('share:'+site);
	//console.log('qrtocfg:'+qrtocfg);
	ttip=$('#tip').attr('v');
	console.log('tip before:'+ttip);
	var cart='';
	if ( get == 1 ) {
		var cart={list:$('#list').html(),sum:$('#sum').html()};
	} else if ( get == 2 ) var cart=0;
	//console.log('get:'+get);
	//console.log(cart);

	$.ajax({type:'POST',url:'ajaxQrshare.php',data:{site:site,tblid:tblid,cart:cart},success:function(data){
			var info=JSON.parse(data);
			//console.log(info);
			seatid=info.seatid;
			if ( info.tbl['cart'] != '' ) {
				if ( info.tbl['cart'] == 0 ) {
					//console.log('cart 0');
					$('#list li').remove();
					$('#sum').hide();
					$('#emptycart').hide();
					$('#empty').show();
					$('#sub').attr({v:0});
					$('#tax').attr({v:0});
					$('#total,#displaytotal').attr({v:0});
				} else if ( info.tbl['cart'] ) {
					logit('QRtbl cart synced back 0');
					$('#list').html(info.tbl['cart']['list']);
					$('#sum').html(info.tbl['cart']['sum']).show();
					$('#empty').hide();
					$('#emptycart').show();
				}
				var c=0;
				$('#list li').each(function(){
					c+=Number($(this).find('b.q').text());
				});
				$('#mobcart,#cart').attr({v:c});
				var total=Number($('#total').attr('v'));
				$('#po2,#checkout').attr({v:'$'+total.toFixed(2)});
				if ( c&gt;0 ) $('#checkout').removeClass('disabled'); 
				else{ $('#checkout').addClass('disabled'); 
                    console.log('DISABLE 16 checkout ****');
                }
			}
			Cookies.set('seatid',seatid);
			$('#custom h5:nth-child(1)').attr({s:seatid}); 
	ttip=$('#tip').attr('v');
	console.log('tip after:'+ttip);
	}});
	sint=setTimeout(function(){myShare();},10000);
}
function myRead(){
	if ( /pay/i.test(location.hash) ) return;

	var d = new Date();
	var cart=localStorage.getItem('cart');
	if ( !cart || cart == '' ) {
		$('#mobcart,#cart').attr({v:0});
	} else {
		try {
			cart=JSON.parse(cart);
			if ( (d.getTime() - cart.time) &gt; 3600*1000000 )	 {
				$('#mobcart,#cart').attr({v:0});
			} else {
				$('#custom').html(cart.htm);	
				$('#mobcart,#cart').attr({v:cart.c});
			}
		} catch(e) {
			console.log(e);
		}
	}
}
function formatDate() {
	var d = new Date(), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear();
	if (month.length &lt; 2) month = '0' + month;
	if (day.length &lt; 2) day = '0' + day;
	return [year, month, day].join('-');
}

var myClose=function(){
	$('body').css({overflow:'visible'});
}
function checkScreenWidth() {
        const mainDiv = document.getElementById('main');
        if (window.innerWidth &gt; 600) {
            mainDiv.classList.add('flex');
        } else {
            mainDiv.classList.remove('flex');
        }
}

$(document).ready(function(){
    logit('site 1:'+site);
    isClosed();
    isFuture = document.getElementById('itemlist');//exists(!=null) if using onlinetheme=2
   
	function checkMobile() {
        return window.innerWidth &lt; 603 &amp;&amp; window.innerHeight &gt;= window.innerWidth;
    }
    
    // Function to handle scroll events
    function handleScroll() {
        if (!checkMobile()) return; // Exit if not in mobile view

        $('.itemlist').each(function() {
            var itemTop = $(this).offset().top;
            var scrollPos = $(window).scrollTop();
            if (scrollPos + 40 &gt;= itemTop) {
                var cid = $(this).data('cid');
                $('.cat').removeClass('on');
                $('.cat[data-cid="' + cid + '"]').addClass('on');
            }
        });
    }

    // Initial check and attach scroll event handler
    if (checkMobile()) {
        console.log('mobile width scrolling');
        $(window).on('scroll', handleScroll);
    }

    // Optional: Handle window resize to recheck mobile state
    $(window).resize(function() {
        if (checkMobile()) {
            console.log('mobile width scrolling');
            $(window).on('scroll', handleScroll);
        } else {
            $(window).off('scroll', handleScroll); // Remove scroll handler for non-mobile view
        }
    });
    var kpu=Cookies.get('kkm');
        //console.log(Iids);
        //console.log('dfeemini='+dfeemini);
        console.log("looking for kkm");
        if ( typeof kpu != 'undefined' ) {
            console.log("kpu found");
            var kpus=kpu.split(/\|/);
            if ( kpus[0] &gt; 0 ) {
                $('#addpass').hide();
                $('#signin').attr({href:'profile.php'}).text(kpus[1]);
                $('#signin2').attr({href:'profile.php'}).html('&lt;i class=material-icons&gt;account_circle&lt;/i&gt;'+kpus[1]);
            } else {
                $('#addpass').show();
                $('#signin').attr({href:'signin.php'}).text('Login');
                $('#signin2').attr({href:'signin.php'}).html('&lt;i class=material-icons&gt;exit_to_app&lt;/i&gt;Login');
            }
        }

                //nst buttonRight = document.getElementById('slideRight');
                //nst buttonLeft = document.getElementById('slideLeft');
                //nsole.log("finding buttons");
    if(isFuture != null){
        console.log('is future theme');
        $(document).on('click','#backtomenu',function(){
            location.href='index.php';
            return;
        });
        const buttonLeft = document.getElementById('slideLeft');
        const buttonRight = document.getElementById('slideRight');

        if (buttonRight &amp;&amp; buttonLeft) {
          const container = document.getElementById('category');
            if(container) {
              function updateButtons() {
                if (container.scrollLeft &gt; 0) {
                  buttonLeft.classList.remove('hide');
                } else {
                  buttonLeft.classList.add('hide');
                }

                if (container.scrollLeft + container.clientWidth &lt; container.scrollWidth) {
                  buttonRight.classList.remove('hide');
                } else {
                  buttonRight.classList.add('hide');
                }
              }

              document.getElementById('slideRight').onclick = function () {
                container.scrollBy({ left: 150, behavior: 'smooth' });
                updateButtons();
              };

              document.getElementById('slideLeft').onclick = function () {
                container.scrollBy({ left: -150, behavior: 'smooth' });
                updateButtons();
              };

              // Initial check
              updateButtons();

              // Also update when the user scrolls manually
              container.onscroll = updateButtons;
            }
        }
        checkScreenWidth();
        window.addEventListener('resize', checkScreenWidth);
        document.addEventListener("DOMContentLoaded", function(){
            var item = $('#category li.cat.on').data('item');
            var cid = $('#category li.cat.on').data('cid');
            $('.mobitem').html('').slideUp();
            $('.mobitem[data-cid='+cid+']').html(item).slideDown();
            setTimeout(function() {
                let itemListH5s = document.querySelectorAll('.itemlist h5');
                itemListH5s.forEach(function(h5) {
                    h5.textContent = h5.textContent.replace(/ *\([^)]*\) */g, '');
                });
             }, 100);
       });

       document.getElementById('hour').addEventListener('click', function() {
            var pre = this.querySelector('pre');
            var header = this.querySelector('b');
                if (pre.classList.contains('hide')) {
                    pre.classList.remove('hide');
                    header.textContent = 'Hide Business Hours';
                } else {
                    pre.classList.add('hide');
                    header.textContent = 'Show Business Hours';
                }

        });
        document.addEventListener('DOMContentLoaded', function () {

            var elements = document.querySelectorAll('#itemlist');

            // Iterate over the elements and change display to block
            elements.forEach(function(element) {
                element.style.display = 'block';
            });
        });
        const categoryList = document.querySelector('#category ul');
        if (categoryList) {
            const observer = new MutationObserver(() =&gt; {
                var categoryDiv = document.getElementById('category');
                var onItem = categoryDiv.querySelector('.cat.on');
                if (onItem) {
                    var offsetLeft = onItem.offsetLeft - categoryDiv.offsetWidth / 2 + onItem.offsetWidth / 2;
                    categoryDiv.scrollTo({ left: offsetLeft, behavior: 'smooth' });
                }
            });

            observer.observe(categoryList, { attributes: true, childList: true, subtree: true });
        }

        var width = window.innerWidth;
        $('.cat').each(function() {
            var cid = $(this).data('cid');

            var item = $(this).data('item');
            item = item.replace('\n', ' ').replace('\r', '');

            var h5Content = item.match(/&lt;h5&gt;([\s\S]*?)&lt;\/h5&gt;/i)[0];
            h5Content = h5Content.replace(/ *\([^)]*\) */g, '');
            item = item.replace(/&lt;h5&gt;([\s\S]*?)&lt;\/h5&gt;/i, `${h5Content}`);

            $('.mobitem[data-cid=' + cid + ']').html(item).fadeIn();
        });
        $(window).on('beforeunload', function() {
          $('body').hide();
          $(window).scrollTop();
        });
    }

	debug=false;
	if ( /^kpqa/i.test(site ) ){
		debug=true;
		dFee=Number($('#dfee').attr('v'));
		if ( isNaN(dFee)) dFee=0;
        logit('version: '+ version);
		logit(' 00xdFee: '+dFee);
	}

	if ( typeof deletecart != 'undefined'){
        logit('deletecart:'+deletecart);
        if(deletecart){
            logit('  to delete cart');
            localStorage.clear(); 
            $('#list li').remove();
            mySum();
        }
    }

    function tecInit() {
        var teInstance = window["te-connect"].createTEConnect(tecAuthhead);
        var teConnect = new window["te-connect-js"].TeConnectJs(teInstance);

        var tecStyles = {
            base: {
                wrapper: { 
                    margin: '10px', 
                    padding: '10px 50px',
                    direction: 'column'
                },
                variants: {
                    inputType: 'outlined',
                    inputMargin: 'dense'
                },
                backgroundColor: '#FAFAFA'
            },
            boxes: {
                borderRadius: 5,
            }
        };

        teConnect.mountCardEntry('tecdiv',tecStyles);

        function createPaymentClick() {
			var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:30% 0'&gt;&lt;b style='width:100%;text-align:center;margin-bottom:10%;'&gt;Processing...&lt;/b&gt;&lt;img src=loading.gif&gt;&lt;/div&gt;";
			$('#msg .modal-content').html(h);
			$('#msg').modal({dismissible:false,onCloseEnd:myClose});
			$('#msg').modal('open');

            return teConnect.createPayment()
                .then(resp =&gt; {
                    console.log(resp);

                    if (resp.error) {
                        //Not successful - see error
                        console.log('teconnect FAIL');
		                $('#pay a.p.on').removeClass('on');
			            $('#msg').modal('close');
                        $('#tecdivo').modal({dismissible:true,onCloseEnd:function (){
                            $('#po2,#checkout').addClass('disabled');
                            $('#pcard').removeClass('on');
                            $('#card').val('');
                        } });
                        
                        $('#tecdivo').modal('open');
                    }
                    else {
                        //Successful - see response
                        console.log('teconnect success');
                        tectoken=resp['token'];
                        console.log('teconnect token:'+tectoken);
                        pan=resp['cardMetaData']['maskedPAN'];
                        last4=pan.substring(pan.length-4);
                        exp=resp['cardMetaData']['expirationDate'];
                        zip=resp['cardMetaData']['billingZip'];
                        exp=exp.substring(2)+exp.substring(0,2); 

                        $('#pcash').removeClass('on');

                        $('#card').val(tectoken);
                        $('#cexp').val(exp);
                        $('#last4').val(last4);
                        $('#czip').val(zip);
                        $('#cvv').val(123);

                        console.log('exp:'+exp);
                        console.log('last4:'+last4);
                        console.log('zip:'+zip);
                        $('#checkout').trigger('click');
                    }
                })
                .catch(err =&gt; console.error("[Catch]:", err));
        }
        document.getElementById('tecpay').addEventListener('click', createPaymentClick);
    }
    if(teconnect) tecInit();


	enableapay=true;
	if ( typeof postmates != 'undefined' &amp;&amp; postmates&gt;0 ) console.log('pm:'+postmates);
	if ( typeof surcharge != 'undefined' &amp;&amp; surcharge&gt;0 ) console.log('surcharge: '+surcharge);
	if ( typeof surchargegtip != 'undefined' ) console.log('surchargegtip: '+surchargegtip);
	window.addEventListener('message', function(event) {
                console.log('window message:');
                console.log(event);
                type=event.data.type;
                if(type=='CLOSE_IFRAME'){
                        $('#pcash').removeClass('on');
                        $('#po2,#checkout').addClass('disabled');
                    console.log('DISABLE 17 checkout ****');
                }
                origin=event.data.verifyOrigin;
                if(origin!='AcceptMain'){
			try{
				var data = JSON.parse(event.data);
				token = data.message;
				console.log('x token:'+token);
				$('#card').val(token);
			}catch(err){
				console.log('686 error:');
				console.log(err);
			}
                }
                }, false);

	if ( tbl != '' ) console.log('tbl not empty: '+tbl);
	else console.log('tbl empty: '+tbl);
	if (typeof tblid === 'undefined' || tblid==0){ $('#tblmanage').addClass('hide'); }

	if ( typeof lat != 'undefined' ) console.log('lat:'+lat);
	if ( typeof lng != 'undefined' ) console.log('lng:'+lng);

	if ( typeof trx == 'undefined' ) trx=false;
        if(trx) $('#trxpay').removeClass('on');

        if (trx) {
		console.log('ccurl: '+ccurl);
		console.log('trxpayurl: '+trxpayurl);
		console.log('trxpmtpageid: '+trxpmtpageid);
	}
	if ( typeof authnet == 'undefined' ) authnet=false;
        if (authnet) {
		console.log('ccurl: '+ccurl);
		console.log('authnet: '+authnet);
		console.log('authnetkey: '+authnetkey);

                $('#pcard').addClass('hide');
                $('#authnetpay').removeClass('on');
        }

	$('.collapsible').collapsible();

//	if ( typeof kFeeo == 'undefined' )  console.log('kfeeo undefined');
//	else  console.log('kFeeo: '+kFeeo);
//
//	if ( typeof phonerequire == 'undefined' )  console.log('phonerequire undefined');
//	else console.log('phonerequire: '+phonerequire);

//	if ( typeof taxrate == 'undefined' )  console.log('taxrate undefined');
//	else console.log('taxrate:'+taxrate);
//
//	if ( typeof tax2rate == 'undefined' )  console.log('tax2rate undefined');
//	else console.log('tax2rate:'+tax2rate);
//
	if ( typeof kx == 'undefined' )  console.log('online undefined');
	else console.log('online:'+kx);

	if ( typeof mpay == 'undefined' ) mpay=0;
	apay=0;

	logit('mpay:'+mpay);
	pickuplen= $('#pickup').length;
	delivlen= $('#delivery').length;
	console.log('pickuplen:'+pickuplen);
	console.log('delivlen:'+delivlen);
	if(debug) console.log('debug true');

	//dlen= $('#delivery').length;
	//plen= $('#pickup').length;

////////////////

	merchantIdentifier = 'merchant.com.kwick2go';
        if (window.ApplePaySession &amp;&amp; enableapay) {
                var promise = ApplePaySession.canMakePaymentsWithActiveCard(merchantIdentifier);
                promise.then(function (canMakePayments) {
                        if (canMakePayments) {
                                //document.getElementById("pmt").style.padding = "10px 0px 0px 0px";
                                if(mpay) {
					apay=1;
					logit(' **apay1');
					if ( /pay/i.test(location.hash) &amp;&amp; tblid&gt;0){
						$('#papple').show(); 
						$('#apaywarning').hide(); 
					}
				}

                                //if(apay){ document.getElementById("applePay").style.display = "inline"; }
                        } else {
				if(mpay) apay=2;
				logit(' **apay02 ');
                                //document.getElementById("pmt").style.padding = "150px 0px 0px 0px";
                                //if (ApplePaySession.openPaymentSetup) {
                                //        document.getElementById("setup").style.display="inline";
                                //}
                        }
                });
        } else {
		logit(' *apay00 ');
                //console.log('applepay not supported');
        }

	$(document).on('click','#papple',function(){
		$('#cardrow,#gcardrow').slideUp();
		$('#pcard').removeClass('on');
		logit('--5--- papple clicked');
		//    document.getElementById("pmt").style.padding = "10px 0px 0px 0px";
		//    $('#card').hide();

		var total=Number($('#total').attr('v'));

		$(this).addClass('on');

		var d={};
		d['site']=site;
		d['oid']=15;
		d['p']=total;
		d['tip']=0;
		d['total']=total;

		d['cn']='';
		d['ce']='';
		d['cv']='';
		d['cf']='';
		d['cl']='';
		d['cz']='';

		logit(JSON.stringify(d));
		var runningTotal   = d['total'].toFixed(2);
		var subTotalDescr  = "Total";
		var paymentRequest = {
		      currencyCode: 'USD',
		      countryCode: 'US',
		      lineItems: [{label: subTotalDescr, amount: runningTotal}],
		      total: {
			 label: 'Food',
			 amount: runningTotal
		      },
		      supportedNetworks: ['amex', 'masterCard', 'visa','discover' ],
		      merchantCapabilities: [ 'supports3DS', 'supportsEMV', 'supportsCredit', 'supportsDebit' ]
		    };

            pr=JSON.stringify(paymentRequest);
            logit('--5--- pr '+pr);

            var session = new ApplePaySession(1, paymentRequest);

            session.onvalidatemerchant = function (event) {
                logit('--6--- applepay2 clicked');
                eventobj=JSON.stringify(event);
		logit(eventobj);
                var promise = performValidation(event.validationURL);
                promise.then(function (merchantSession) {
                    logit('--7c--- applepay to completeValidation');
                    session.completeMerchantValidation(merchantSession);
                });
            }

            function performValidation(valURL) {
                logit('--7--- applepay2 cperformValidation valURL:'+ valURL);
                return new Promise(function(resolve, reject) {
			logit('--7a--');
                    var xhr = new XMLHttpRequest();
                    xhr.onload = function() {
			//logit('--7a--res: '+this.responseText);
			logit('--7a--res len: '+this.responseText.length);
                        var data = JSON.parse(this.responseText);
                        eventobj=JSON.stringify(data);
                        resolve(data);
                    };
                    xhr.onerror = reject;
                    xhr.open('GET', 'apple_pay_comm.php?u=' + valURL + '&amp;site='+site);
		    xhr.onreadystatechange = function receiveResponse() {
			    //logit('state:'+this.readyState);
			    //logit('status:'+this.status);
			    //logit("response : " + this.response);
			    if (this.readyState == 4) {
				if (this.status == 200) {
				    //logit("--7b-- We got a response : " + this.response);
				    //logit("--7b-- We got a 200 response : ");
				    logit("--7b-- valURL validation 200 response. length: : " + this.response.length);
				} else if (!isValid(this.response) &amp;&amp; this.status == 0) {
				    logit(" apple_pay_comm.php valURL validation error");
				}
			    }
			};
                    xhr.send();

                });
            }

				tox=$('#total').attr('v');
				logit('to: '+tox);
				logit('xdFee: '+dFee);
	session.onpaymentmethodselected = function(event) {
		logit('--8--- applepay2 onpaymentmethodselected');
                eventobj=JSON.stringify(event);
                var newTotal = { type: 'final', label: 'kwickmenu', amount: runningTotal };
                var newLineItems =[{type: 'final',label: subTotalDescr, amount: runningTotal}];
                session.completePaymentMethodSelection( newTotal, newLineItems );
            }

	session.onpaymentauthorized = function (event) {
		logit('--9--- applepay2 onpaymentauthorized ');
                eventobj=JSON.stringify(event);

                var promise = sendPaymentToken(event.payment.token);
                promise.then(function (success) {
                    var status;
                    if (success){
				status = ApplePaySession.STATUS_SUCCESS;
				logit('--11b--- applepay SUCCESS');
				//document.getElementById("applePay").style.display = "none";
				//$(document).on('click','#papple',function(){
			    } else {
				status = ApplePaySession.STATUS_FAILURE;
				logit('--11b--- applepay FAILED');
				//console.log('declined');
                                //var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Payment Failed!&lt;/div&gt;&lt;br&gt;Please try again or a different payment method or call us!&lt;br&gt;&lt;br&gt;";
                                //h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
                                //$('#msg .modal-content').html(h);
                                //$('#msg').modal({dismissible:true,onCloseEnd:myClose});
                                //$('#msg').modal('open');
			    }
			    session.completePayment(status);
			}).catch(error=&gt;{
                		logit( '----11c--error-'.JSON.stringify(error));
			});
            	}

	       function sendPaymentToken(paymentToken) {
			logit('--10--- applepay2 sendPaymentToken');
			return new Promise(function(resolve, reject) {
				eventobj=JSON.stringify(paymentToken);
				logit('--10a--- applepay2 token: site:'+site+'ccurl:'+ccurl);
				$.ajax({type:'POST',url:'ajaxcca.php',data:{token:eventobj,site:site,ccurl:ccurl},success:function(cctoken){
					logit('--11a--- applepay2 back from jaxcca cctoken:'+cctoken);
					//what if cctoken empty?
					d['cn']=cctoken;
					$('#msg').modal({dismissible:false});
					$('#msg').modal('open');
					xcctoken=cctoken;
					$('#card').val(cctoken);
					$('#checkout').trigger('click');
					resolve(true);
				}});
                });
            }
            session.oncancel = function(event) {
            	logit('--12--- applepay2 cancel');
                eventobj=JSON.stringify(event);
            }
            session.begin();
        });

////////////////

	if ( location.hash == '#success' ) {
		$('#list li').remove();
		mySum();
		location.href='index.php';
	}

        if ( location.hash == '#failed' ) {
                console.log('trigger checkout');
                setTimeout(function(){
                                $('#checkout').trigger('click');
                },2000);
        }

	if ( /pay/i.test(location.hash) ) {
		//logit('hash:'+location.hash);
	//	xtblid=Cookies.get('tblid');
	//	logit('xtblid:'+xtblid);


		if (typeof Cookies.get('tblid') === 'undefined'){
			logit('xtblid: no cookie');
		} else {
			xtblid=Cookies.get('tblid');
			tblid=xtblid;
			xtbl=Cookies.get('tbl');
			tbl=xtbl;
			logit('xtblid:'+xtblid);
			logit('xtbl:'+xtbl);
			xPh='0000000000'+xtblid;
			xPh=xPh.slice(-10);
			logit('xPh:'+xPh);
			if (!( typeof phonerequire != 'undefined' &amp;&amp; phonerequire =='Required' &amp;&amp; ph=='')){
				$('#ph').val(xPh);
			    logit(' SET tblid to phone 1');
            }
            Fn=$('#fn').val();
            if(Fn==''){
			    $('#fn').val(Fn);
            }
            logit('SET tbl to fn 1');
			//$('#papple').show(); 
		}

		var perfEntries = performance.getEntriesByType('navigation');
		for (var i=0; i &lt; perfEntries.length; i++) {
			//console.log('= Navigation entry[' + i + ']');
			var p = perfEntries[i];
			if( p.type=='reload' ) {
				location.href='index.php';
			}
		}

		var c=location.hash.split(/=/)[1];
		//var cart=LZ.de(LZ.fb(atob(c)));
		var cart=atou(LZ.de(LZ.fb(atob(c))));
		//console.log(cart);
		//var cart=Cookies.get(site+'cart');

		cart=cart.replace(/\^5/g,'&lt;/a&gt;&lt;div class=\\"modname\\"&gt;');
		cart=cart.replace(/\^4/g,'&lt;/b&gt;&lt;a class=\\"mainname\\"&gt;');
		cart=cart.replace(/\^2/g,'&lt;/b&gt;&lt;/li&gt;&lt;li class=\\"cust flex\\" data-iid=');
		cart=cart.replace(/\^8/g,'&lt;/b&gt;&lt;div class=\\"col s8 m8 l8 n\\"&gt;&lt;b class=\\"c\\"&gt;');
		cart=cart.replace(/\^1/g,'&lt;b class=\\"col s1 m1 l1 q\\"&gt;');
		cart=cart.replace(/\^3/g,'&lt;b class=\\"col s3 m3 l3 p\\"&gt;');

		//logit(cart);

		cart=JSON.parse(cart);
		$('#custom').html(cart.htm);
		mySum();

		$('#mobcart,#cart').attr({v:cart.c});
		var v=$('#checkout').attr('v');
		$('#po2').addClass('disabled po').text('PLACE ORDER').attr({v:v});;
		$('#checkout').addClass('disabled po');
                    console.log('DISABLE 18 checkout ****');
		$('#list b.a,#list b.r').hide();
		$('#emptycart').hide();
		$('#topsearch').remove();
		$('#topmenu').remove();
		$('#category').remove();
		$('#item').remove();
        if(isFuture) $('.itemlist').remove();
		$('#pay').show();

		myPv();

	}
		phonevalid=false;
		if ( typeof postmates == 'undefined' ){
			postmates=0;
		}
		if ( typeof dfeemini == 'undefined' ){
			dfeemini=0;
		}
		var storename=$('#fname').text;
		var storeadd=$('#address').val();
		var storephone=$('#phone').text;
		if(typeof nopreorders !='undefined') console.log("nopreorders:"+nopreorders);
		else console.log('nopreorders undefined');
		if(typeof lang !='undefined') 
			console.log("lang:"+lang);
		else {
			lang='en';
		}
		if(typeof hdays !='undefined') console.log(hdays);
		else hdays=[];
		if(typeof uid !='undefined') console.log('uid:'+uid);
		else uid=0;

		$('#moblang').attr('v',lang);
		if( $('#pickup i').length == 0 ) $('&lt;style&gt;#pickup b{width:100%;}&lt;/style&gt;').appendTo('body');
		if( $('#delivery i').length == 0 ) $('&lt;style&gt;#delivery b{width:100%;}&lt;/style&gt;').appendTo('body');
		//if(typeof dfee !='undefined') console.log("dfeex:"+dfee.textContent);
		//if(typeof dFee !='undefined') console.log("dFeex:"+dFee);
		//if(typeof kFee !='undefined') console.log("kFeex:"+kFee);
		//if(typeof plan !='undefined') console.log("planx:"+plan.textContent);
		//if(typeof planIndb !='undefined') console.log("planIndb:"+planIndb);
		//else console.log("planIndb: underfinedx");
		var today = formatDate();
		if ( hdays.indexOf(today) &gt; -1 ) {
			console.log('holiday OFF');
			OFF=1;
		}

		var kpu=Cookies.get('kkm');
		//console.log(Iids);
		//console.log('dfeemini='+dfeemini);
        
		if ( typeof kpu != 'undefined' ) {
            console.log("kpu found");
			var kpus=kpu.split(/\|/);
			uid=kpus[0],Fn=kpus[1],Ln=kpus[4],Ph=kpus[3],Em=kpus[5];
			$('#fn').val(Fn);
            logit(' SET fn 2:'+Fn);
			$('#ln').val(Ln);
			$('#ph').val(Ph);
			$('#em').val(Em);
			if ( kpus[0] &gt; 0 ) {
				$('#addpass').hide();
				$('#signin').attr({href:'profile.php'}).text(kpus[1]);
				$('#signin2').attr({href:'profile.php'}).html('&lt;i class=material-icons&gt;account_circle&lt;/i&gt;'+kpus[1]);
			} else {
				$('#addpass').show();
				$('#signin').attr({href:'signin.php'}).text('Login');
				$('#signin2').attr({href:'signin.php'}).html('&lt;i class=material-icons&gt;exit_to_app&lt;/i&gt;Login');
			}
		}
		var c=Cookies.get('kka');
		try {
			myAddress=JSON.parse(localStorage.getItem('myAddress'));
		} catch (e) {
			//console.log('myAddress error');
			console.log(e);
		}
		if ( uid &gt; 0 &amp;&amp; myAddress == null) {
			//myAddress=localStorage.getItem('myAddress');
			var c=Cookies.get('kka');
			if ( /lat/.test(c) ) {
				c=c.replace(/\+/g,' ');
				myAddress=[JSON.parse(c)];
				localStorage.setItem('myAddress',JSON.stringify(myAddress));
				Cookies.remove('kka', {path:'/', domain:'kwickmenu.com'});
			}
		}
		errImgs();
		$('#gcard').mask('0000 0000 0000 0000');
		$('#card').mask('0000 0000 0000 0000');
		$('#ph').mask('000 000-0000');
		$('#cexp').mask('Mm/Yy',{translation:{M: {pattern: /[0-1]/}, m: {pattern: /[0-9]/}, Y: {pattern: /[1-5]/}, y: {pattern: /[0-9]/} }});
		$('#cvv').mask('0000');
		$('#czip').mask('00000');

        function updateKkmCookie(page) {
            var kkm = Cookies.get('kkm');
            if (typeof kkm != 'undefined') {
                kkm = kkm.split(/\|/);
                console.log('kkm:' + kkm);

                
                kkm = kkm.join('|');
                Cookies.set('kkm', kkm, { domain: '.kwickmenu.com', path: '/' + page});
                
            }
        }
        document.getElementById('nav').addEventListener('click', function(event) {
            if (event.target.tagName === 'A' &amp;&amp; event.target.id) {
                var clickedText = event.target.id
                var checkText = event.target.innerText || event.target.textContent;
                console.log("clicked" , clickedText , " check" , checkText);
                clickedText=clickedText.toLowerCase() + '.php';
                console.log('Clicked text:', clickedText);
                if(clickedText === 'signin.php' &amp;&amp; checkText !== 'Login'){clickedText='profile.php'}
                if(clickedText === 'home.php'){clickedText='index.php'}
                if(clickedText === 'gcshow.php'){clickedText='egift.php'}
                updateKkmCookie(clickedText);  
            }
        });
		$('#category li.cat').on('click',function(){
			getInv();
			console.log(' --- getInv called 1 ');
			if ( $(this).hasClass('on') ) {
				if ( !$('#item').is(':visible') &amp;&amp; (isFuture == null)) {
                    $(this).removeClass('on');
                    $('.mobitem').html('').slideUp();
				}
				return;
			} else {
                if(isFuture == null){
                    $('#category li.on').removeClass('on');
                    $(this).addClass('on');
                }
				var item=$(this).data('item');
				
                if ( $('#item').is(':visible') ) {//checks for med and large view
                    if(isFuture == null){
                        $('#item .item').html(item);
                        const overlays = document.querySelectorAll('.loadingOverlay');
                        overlays.forEach(overlay =&gt; {
                            overlay.remove(); // Remove the overlay from the DOM
                        });
 
                    }else{
                        $('#category li.on').removeClass('on');
                        $(this).addClass('on');				
                        item = item.replace('\n', ' ').replace('\r', '');
                        let h5Content = item.match(/&lt;h5&gt;([\s\S]*?)&lt;\/h5&gt;/i)[0];
                        const regex = / *\([^)]*\) */g;
                        const matches = [];
                        // Use the exec method in a loop to find all matches
                        let match;
                            if((match = h5Content.match(/ *\([^)]*\) */g)) !== null){
                            console.log(match);
                            h5Content = h5Content.replace(/ *\([^)]*\) */g, '');
                            h5Content = h5Content + "&lt;p&gt;" + match[0] + "&lt;/p&gt;";
                            item = item.replace(/&lt;h5&gt;([\s\S]*?)&lt;\/h5&gt;/i,`${h5Content}`);
                            
                            }
                        $('#item .item').html(item);
                        const overlays = document.querySelectorAll('.loadingOverlay');
                        overlays.forEach(overlay =&gt; {
                            overlay.remove(); // Remove the overlay from the DOM
                        });
                    }
				}else {//checks for mobile view
					if(isFuture == null){
                        var cid=$(this).data('cid');
                        $('.mobitem').html('').slideUp();
                        $('.mobitem[data-cid='+cid+']').html(item).slideDown();
                        const overlays = document.querySelectorAll('.loadingOverlay');
                        overlays.forEach(overlay =&gt; {
                            overlay.remove(); // Remove the overlay from the DOM
                        });

                    }else{
                        var cid=$(this).data('cid');
                        var targetElement = $('.mobitem[data-cid="' + cid + '"]');
                        setTimeout(function() {
                            var scrollPosition = targetElement.offset().top - 20;
          
                            $('html, body').animate({
                                scrollTop: scrollPosition
                            }, 800);
                        }, 100);

                    }
                }
				chkInv();
				wkday();
			}
			errImgs();
		});
		myRead();
		$(document).on('click','#msg a.changead',function(){
			location.reload(true);
		});
		$(document).on('click','#msg a.ahead',function(){
			$(window).scrollTop(0);
			$('#pickup').trigger('click');
			$('#later').trigger('click');
		});
		$(document).on('click','#msg a.emptyyes',function(){
				$('#list li').remove();
				mySum();
		});
		$('#emptycart').on('click',function(){
				var h="&lt;div class='row'&gt;";
				h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
				h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Are you sure&lt;br&gt;you want to EMPTY&lt;br&gt;the cart?&lt;/h4&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;";
				h+="&lt;p style='margin:30px auto;;width:80%'&gt;&lt;a class='modal-close btn-large redkp left emptyyes'&gt;Yes&lt;/a&gt;&lt;a class='modal-close btn-large right emptyno'&gt;NO&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
				$('#msg .modal-content').html(h);
				$('#msg').modal({dismissible:true});
				$('#msg').modal('open');
		});
		if ( $('#dfee').is(':visible') ) dFee=Number($('#dfee').attr('v'));
		$(document).on('click','a.subitem,li.item,#list li b.e',function(){
				if ( OFF == 11 ) return;
				var iid=$(this).data('iid');
				var iids='',cnote='';
					console.log('iid:'+iid);	
				if ( $(this).hasClass('e') ) {
					cnote=$(this).closest('li').find('b.cnote').text();;
					iids=$(this).closest('li').data('iid');
				}
				if ( $(this).hasClass('soldout') ) {
					var h="&lt;div class='row'&gt;";
					h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
					h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;SORRY, SOLD OUT!&lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
					h+="&lt;p class=center&gt;Please try others &amp; check back later.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
					h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large redkp'&gt;Close&lt;/a&gt;&lt;/p&gt;";
					h+="&lt;/div&gt;";
					$('#msg .modal-content').html(h);
					$('#msg').modal({dismissible:true});
					$('#msg').modal('open');
					return;
				}

				if ( Iids[iid]['item_breakfast'] == 1 &amp;&amp; Breakfast &gt; 0 ) {
					var cd = new Date();
					var breakfast=cd.getHours()*3600+cd.getMinutes()*60+cd.getSeconds();
					if ( breakfast &gt; Breakfast ) {
						var h="&lt;div class='row'&gt;";
						h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
						h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, Breakfast is over&lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;p class=center&gt;Please choose any other items.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large'&gt;Close&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true});
						$('#msg').modal('open');
						return;
					}
				}

				if ( Iids[iid]['item_lunch'] == 1 &amp;&amp;  Lunch &gt; 0 ) {
					var cd = new Date();
					var lunch=cd.getHours()*3600+cd.getMinutes()*60+cd.getSeconds();
					if ( lunch &gt; Lunch ) {
						var h="&lt;div class='row'&gt;";
						h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
						h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, Lunch is over&lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;p class=center&gt;Please choose any other items.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large'&gt;Close&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true});
						$('#msg').modal('open');
						return;
					}
				}
				if ( isMax() ) return;

				isClosed();

				var p_v=$('#pickup').attr('v');
				var d_v=$('#delivery').attr('v');
				if ( typeof d_v == 'undefined' ) d_v='';
				if ( typeof p_v == 'undefined' ) p_v='';
				//console.log('pv:'+p_v+' dv:'+d_v);

				if ( Closed &amp;&amp; p_v == '' &amp;&amp; d_v == ''  ) {
					console.log('pv:'+p_v+' dv:'+d_v);
					console.log('closed:'+Closed);
				
					var h="&lt;div class='row'&gt;";
					h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
					h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, We are closed! &lt;/h4&gt;&lt;br&gt;&lt;br&gt;";

					if ( Ahead == 1 &amp;&amp; $('#pickup i').length == 1 )
						h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large ahead'&gt;Order Ahead&lt;/a&gt;&lt;/p&gt;&lt;br&gt;";
					else if ( site=='shanghaidumpling' )
						h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large ahead'&gt;Order Ahead&lt;/a&gt;&lt;/p&gt;&lt;br&gt;";
					else
						h+="&lt;p class=center&gt;Please check back later.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";

					h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large redkp'&gt;Close&lt;/a&gt;&lt;/p&gt;";
					h+="&lt;/div&gt;";
					$('#msg .modal-content').html(h);
					$('#msg').modal({dismissible:true});
					$('#msg').modal('open');
					return;
				}

				getInv();
			console.log(' --- getInv called 2 ');

				if ( Iis[iid] ) {
					var h="&lt;div class='row'&gt;";
					h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
					var I=Iids[iid];
					for( var i in Iis[iid] ){
						var name=I['name'];
						var p=Number(I['price']);
						var io=Iis[iid][i];
						var Io=Ios[io];
						var subiid=iid+'-'+Io['option_id'];
						if ( Io['price'] &gt; 0 )
							p+=Number(Io['price']);
						if ( Io['position'] == 1 ) {
							lang == 'en' ? name+=' '+Io['name'] : name+=' '+Io['ch_name'];
						} else {
							lang == 'en' ? name=Io['name']+' '+name : name=Io['ch_name']+' '+name;
						}
						if ( /&amp;lt;i class/i.test(name) ) {
							//console.log(name);
							name=name.replace(/&amp;lt;/g,'&lt;');
							name=name.replace(/&amp;gt;/,'&gt;');
							name=name.replace(/&amp;gt;/,'&gt;&lt;br&gt;');
						}
						h+="&lt;a class='col s5 l5 m5 subitem' data-iid="+subiid+"&gt;&lt;b class=subname&gt;"+name+'&lt;/b&gt;';
						h+='&lt;b class=subprice&gt;'+p.toFixed(2)+'&lt;/b&gt;&lt;/a&gt;';
					}	
					h+="&lt;/div&gt;";
					$('#msg .modal-content').html(h);
					$('#msg').modal({dismissible:true,onCloseEnd:myClose});
					$('#msg').modal('open');
					return;
				}

				//console.log('iid:'+iid);
				//console.log('Iids:'+JSON.stringify(Iids));

				var name=Iids[iid]['name'];
				name=htmlDecode(name);

				var desc=Iids[iid]['description'];
				var pic=Iids[iid]['picture'];
				var p=Iids[iid]['price'];

				var co=Iids[iid]['co'];
				var cos=Iids[iid]['cos'];
				var cops=Iids[iid]['coptions'];

				var cmax=0;
				var gmod=0;

				if ( /\d-$/.test(cops) ) gmod=1;

				for(var i in cos ) {
					if ( typeof cos[i] == 'undefined' || cos[i] == null ) continue;
					//console.log(cos[i]);
					cos[i].sort(function(a,b){
							return a.did == b.did ? 0 : +(a.did &gt; b.did) || -1;
							});
				}

				if ( typeof cos == 'object' || cos.length &gt; 0  ) {
					for( var i in co ){
						cmax+=co[i]['max'];
					}
					if ( cos.length == 0 ) cmax=0;
					if ( cmax &gt; 0 || gmod == 1 ) {
						var h='&lt;div id=pop data-iid="'+iid+'"&gt;';
						h+="&lt;h5&gt;&lt;b&gt;"+name+"&lt;/b&gt;&lt;/h5&gt;";
						h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
						if ( desc != '' ) h+='&lt;div class=desc&gt;'+desc+'&lt;/div&gt;';

                        if ( pic != '' )  h+="&lt;div class=popimg style='background-image:url(/img/"+pic+")'&gt;&lt;/div&gt;";
						//if ( desc != '' ) h+='&lt;div class=desc&gt;'+desc+'&lt;/div&gt;';
						var grps=0;
						for( var i in co ){
							if ( typeof cos[i] == 'undefined' ) continue;
							if ( co[i]['max'] == 0 &amp;&amp; gmod == 0 ) continue ;
							grps++;
						}
						var grpc=0;
						var optionheight=0;

						var BTNO='&lt;a class="waves-effect waves-light add off"&gt;&lt;/a&gt;';
						var BTNQ='&lt;a class="waves-effect waves-light del"&gt;&lt;/a&gt;&lt;u class="num"&gt;&lt;/u&gt;&lt;a class="waves-effect waves-light add qty"&gt;&lt;/a&gt;';
                        var BTNN='&lt;p id=nesteddesc data-p="0" data-ids=""&gt;&lt;/p&gt;&lt;a class="waves-effect waves-light nested off"&gt;&lt;/a&gt;';
						var req=0;

						var oco=co;
						if ( gmod == 1 ) { 
							var oco=[];
							cops.split(/-/).forEach((c)=&gt;{
									if ( c !== '' ) oco.push(c);
									});
						}

						//console.log(co);
                        var hasnestedmod = false;
                        getInv();
                        console.log(myInv);
						for( var i in oco ){
							if ( gmod == 1 ) i=oco[i];

							if ( typeof cos[i] == 'undefined' ) continue;
							if ( co[i]['max'] == 0 &amp;&amp; gmod == 0 ) continue ;
							if ( gmod == 1 ) req+=co[i]['min'];

							var max=co[i]['max'];
							grpc++;
							h+='&lt;div class=group data-grp='+i+' data-grpc='+grpc+' data-max='+max+' data-grps='+grps+'&gt;';
							if ( co[i]['name'] != '' )
								h+='&lt;b&gt;'+co[i]['name']+'&lt;/b&gt;';
							else
								h+='&lt;b&gt;Please choose '+max+' of following selections.&lt;/b&gt;';
							h+="&lt;div class=row&gt;";
							if ( Math.ceil(cos[i].length/4)&gt;optionheight )
								optionheight=Math.ceil(cos[i].length/4);
							for ( var s in cos[i] ) {
								var p=cos[i][s]['price'];
								var picture=cos[i][s]['picture'];
								var BTN=BTNO;
								if ( cos[i][s]['qty'] == 1 )
									BTN=BTNQ;
                                if (Cos[cos[i][s]['id']]['cgrp'] != '' &amp;&amp; Cos[cos[i][s]['id']]['cgrp']){
                                    hasnestedmod = true;
                                    BTN=BTNN;
                                }
                                var lcoption = 'co' + cos[i][s]['id'];
                                //console.log('lcoption: ' + lcoption);
                                var soldout = "";
                                if(myInv[lcoption] !== undefined){
                                    //console.log("lcoption q=" + myInv[lcoption]);
                                    if(Number(myInv[lcoption]) == 0){
                                        //console.log(lcoption + " is sold out");
                                        soldout = "modsoldout"
                                    }

                                }
                                if(soldout != "") BTN="";
								if ( picture == '' ) {
									if ( p &gt; 0 ) {
										if ( lang == 'en' ) h+='&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-p='+p+' data-id='+cos[i][s]['id']+'&gt;'+cos[i][s]['name']+'&lt;b&gt;+$'+p+'&lt;/b&gt;'+BTN+'&lt;/div&gt;&lt;/div&gt;';
										else h+='&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-p='+p+' data-id='+cos[i][s]['id']+'&gt;'+cos[i][s]['name']+'&lt;b&gt;+$'+p+'&lt;/b&gt;'+BTN+'&lt;/div&gt;&lt;/div&gt;';
									} else {
										if ( lang == 'en' ) h+='&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-p='+p+' data-id='+cos[i][s]['id']+'&gt;'+cos[i][s]['name']+BTN+'&lt;/div&gt;&lt;/div&gt;';
										else h+='&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-p='+p+' data-id='+cos[i][s]['id']+'&gt;'+cos[i][s]['name']+BTN+'&lt;/div&gt;&lt;/div&gt;';
									}
								} else {
									if ( p &gt; 0 )
										h+='&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-p='+p+' data-id='+cos[i][s]['id']+'&gt;&lt;img src=/img/'+picture+'&gt;'+cos[i][s]['name']+'&lt;b&gt;+$'+p+'&lt;/b&gt;'+BTN+'&lt;/div&gt;&lt;/div&gt;';
									else
										h+='&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-p='+p+' data-id='+cos[i][s]['id']+'&gt;&lt;img src=/img/'+picture+'&gt;'+cos[i][s]['name']+BTN+'&lt;/div&gt;&lt;/div&gt;';
								}
							}
							h+='&lt;/div&gt;';
							h+='&lt;/div&gt;';
						}
						h+='&lt;/div&gt;';
                        if (!hasnestedmod){
						    h+='&lt;label id=sp&gt;Optional Special Request&lt;input type=text value="'+cnote+'"&gt;&lt;/label&gt;';
                        }

						h+="&lt;div class=row&gt;&lt;div class='col s12 m6 l6 edit-quantity'&gt;";
						h+='&lt;a id=popM class="black-text"&gt;&lt;i class="material-icons md-36"&gt;remove_circle_outline&lt;/i&gt;&lt;/a&gt;';
						h+='&lt;b id=popq&gt;1&lt;/b&gt;';
						h+='&lt;a id=popP class="black-text"&gt;&lt;i class="material-icons md-36"&gt;add_circle_outline&lt;/i&gt;&lt;/a&gt;'
							h+="&lt;/div&gt;&lt;div class='col s12 m6 l6 center'&gt;";
						if ( req &gt; 0 )
							h+='&lt;a id=popA data-gmod='+gmod+' class=disabled data-p='+Iids[iid]['price']+' data-iid="'+iid+'"&gt;$'+Iids[iid]['price']+' - ADD TO ORDER&lt;/a&gt;';
						else
							h+='&lt;a id=popA data-gmod='+gmod+' data-p='+Iids[iid]['price']+' data-iid="'+iid+'"&gt;$'+Iids[iid]['price']+' - ADD TO ORDER&lt;/a&gt;';
						h+='&lt;/div&gt;&lt;/div&gt;';

						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
						return;
					}
				}

				var h='&lt;h5&gt;&lt;b&gt;'+name+'&lt;/b&gt;&lt;/h5&gt;';
				if ( pic != '' )
					h+='&lt;div class=msgimg style="background-image:url(/img/'+pic+')"&gt;&lt;/div&gt;';
				else
					h+='&lt;div class=msgimg style="background-image:url(/c.gif)"&gt;&lt;/div&gt;';
				h+='&lt;div class=desc&gt;'+desc+'&lt;/div&gt;';
				h+='&lt;a class="modal-close fancyclose"&gt;&lt;i class="material-icons md-36"&gt;close&lt;/i&gt;&lt;/a&gt;';
                if (!hasnestedmod){
                    h+='&lt;label id=sp&gt;Optional Special Request&lt;input type=text value="'+cnote+'"&gt;&lt;/label&gt;';
                }
                h+="&lt;div class=row&gt;&lt;div class='col s12 m6 l6 row'&gt;";
				h+='&lt;a id=fancyM&gt;&lt;i class="material-icons md-36"&gt;remove_circle_outline&lt;/i&gt;&lt;/a&gt;';
				h+='&lt;b id=fancyq&gt;1&lt;/b&gt;';
				h+='&lt;a id=fancyP&gt;&lt;i class="material-icons md-36"&gt;add_circle_outline&lt;/i&gt;&lt;/a&gt;'
					h+="&lt;/div&gt;&lt;div class='col s12 m6 l6 center'&gt;";
				h+='&lt;a id=fancyA data-p='+p+' data-iid="'+iid+'"&gt;$'+p+' - ADD TO ORDER&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;';
				$('#msg .modal-content').html(h);
				$('#msg .modal-content').css({height:'100%'});
				$('#msg').modal({dismissible:true,onCloseEnd:myClose});
				$('#msg').modal('open');
		});
		$(document).on('click','#fancyM',function(){
				var q=Number($('#fancyq').text());
				var p=Number($('#fancyA').data('p'));
				q--;
				if ( q &lt; 1 ) {
				$('#msg').modal('close');
				$('body').css({overflow:'visible'});
				return;
				}
				var price=q*p;
				$('#fancyq').text(q.toFixed(0));
				$('#fancyA').text('$'+price.toFixed(2)+' - ADD TO ORDER');
		});
		$(document).on('click','#fancyP',function(){
				var q=Number($('#fancyq').text());
				var p=Number($('#fancyA').data('p'));
				q++
				var price=q*p;
				$('#fancyq').text(q.toFixed(0));
				$('#fancyA').text('$'+price.toFixed(2)+' - ADD TO ORDER');
		});
		$(document).on('click','#fancyA',function(){
				//console.log('add to order fancyA');
				var iid=$(this).data('iid');
				//console.log('iid: '+iid);
				var q=$('#fancyq').text();
				//console.log('q: '+q);
				var cnote=$('#msg input').val();
				//console.log('cnote: '+cnote);
				$('#msg').modal('close');
				myOrder(iid,q,cnote);
				$('body').css({overflow:'visible'});
		});
		$(document).on('click','#popM',function(){
				var q=Number($('#popq').text());
				var p=Number($('#popA').data('p'));
				q--;
				if ( q &lt; 1 ){
				$('#msg').modal('close');
				$('body').css({overflow:'visible'});
				return;
				}
				var price=q*p;
				$('#popq').text(q.toFixed(0));
				$('#popA').text('$'+price.toFixed(2)+' - ADD TO ORDER');
		});
		$(document).on('click','#popP',function(){
				var iid=$('#popA').data('iid');
				var q=Number($('#popq').text());
				var p=Number($('#popA').data('p'));
				if ( myInv[iid] &gt; 0 &amp;&amp; myInv[iid] == q ) {
				maxInv(q);
				return false;
				}
				q++
				var price=q*p;
				$('#popq').text(q.toFixed(0));
				$('#popA').text('$'+price.toFixed(2)+' - ADD TO ORDER');
		});
		$(document).on('click','#popA',function(){
				//console.log('add to order popA');
				var iid=$(this).data('iid');
				var q=$('#popq').text();
				myOption(q);
		});
		$(document).on('click','#pop .option',function(e){
				if ( $(e.target).hasClass('del') ) return;
				if ( $(e.target).hasClass('add') ) return;
				var page=$(this).closest('.group');
				var max=page.data('max');
				if ( max == 1 ) {
                    if ( page.find('.option').length == 1 ) {
                        if ($(this).children('a.nested').length &gt; 0) {
                            $(this).children('a.nested').trigger('click');
                        }else{
                            $(this).children('a.add').trigger('click');
                        }
                    } else {
                        if ($(this).children('a.nested').length &gt; 0) {
                            //page.find('.option.checked').children('a.nested').trigger('click');
                            $(this).children('a.nested').trigger('click');
                        }else{
                            
                            page.find('.option.checked').children('a.add').trigger('click');
                            $(this).children('a.add').trigger('click');

                        }
                    }
				} else {

				    if ($(this).children('a.nested').length &gt; 0) {
                        $(this).children('a.nested').trigger('click');
                    }else{
                        $(this).children('a.add').trigger('click');
                    }
                }
		});
		$(document).on('click','#pop .option a.del',function(){
				var option=$(this).closest('.option');
				var q=Number(option.find('u').text());
				var p=Number(option.data('p'));
				q--;
				var price=Number($('#popA').data('p'));
				price-=p;
				$('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
				if ( q &gt; 0 )
				option.attr({v:q}).find('u').text(q);
				else {
				option.attr({v:0}).find('u').text('').hide();
				option.removeClass('checked');
				$(this).hide();
				}
				$(this).closest('.group').find('a.add').removeClass('disabled');
				$(this).closest('.group').find('a.nested').removeClass('disabled');
                myPopA();
				return false;
		});
        
        //create modal for nested modifiers
        $(document).on('click','#pop .option a.nested', function(e){
            e.preventDefault(); // Prevent the default action
            e.stopPropagation(); // Stop the event from bubbling up
            var option=$(this).closest('.option');
            var page=$(this).closest('.group');
            var groupmax=page.data('max');
            if ( groupmax == 0 ) groupmax=999;
            var chks=0;
            page.find('.checked').each(function(){
                var v=Number($(this).attr('v'));
                chks+=v;
            });

                        var mid=$(this).closest('.option').attr('data-id');

            var ids =  $(this).closest('.option').find('p').attr('data-ids');
            var nesteddesccontent = $(this).closest('.option').find('#nesteddesc').text();
            var modifiername = Cos[mid]['name'];
            var coptions = Cos[mid]['cgrp'];
            var required = 0;
            var gmod = 0;
            if ( /\d-$/.test(coptions) ) gmod=1;

            var coptionlist=[];
            coptions.split(/-/).forEach((c)=&gt;{
                if ( c !== '' ) coptionlist.push(c);
            });
            var oldprice = $(this).closest('.option').find('p').attr('data-p');
            var h='&lt;a class="modal-close fancyclose"&gt;&lt;i class="material-icons md-36"&gt;close&lt;/i&gt;&lt;/a&gt;&lt;div id=nestedpop data-iid="'+mid+'"data-p='+oldprice+'&gt;';
            h += '&lt;h5&gt;&lt;b&gt;' + modifiername + '&lt;/b&gt;&lt;/h5&gt;';
             
            h += '&lt;a id=nestedremove&gt;REMOVE&lt;/a&gt;';
            var fullcoption = [];
            for (let i = 0; i &lt; coptionlist.length; i++) {
                    var result = Object.entries(Cos).filter(([key, sublist]) =&gt; {
                    return sublist['grp'] !== undefined &amp;&amp; sublist['grp'] === coptionlist[i];
                }).map(([key, sublist]) =&gt; {
                    // Map the filtered results to the desired object structure
                    return {
                        coption_id: sublist['coption_id'],
                        name: sublist['name'],
                        price: sublist['price'],
                        grpmin: sublist['grpmin'],
                        grpmax: sublist['grpmax'],
                        picture: sublist['picture']
                    };
                });
                fullcoption[coptionlist[i]] = result.length ? result : [];
            }

            for (let key in fullcoption) {
                var min = Cos[fullcoption[key][0].coption_id]['grpmin'];;
                var max = Cos[fullcoption[key][0].coption_id]['grpmax'];
                if ( gmod == 1 ) required += min;
                var minmax = '';
                if(min == 0 &amp;&amp; max &gt; 0){
                    minmax = '(select up to ' + max +')';
                }else if(min &gt; 0 &amp;&amp; max == 0){
                    minmax = '(select up to ' + min +')';
                }else if(min &gt; 0 &amp;&amp; min == max){
                    minmax = '(select ' + min + ')';
                }else if(min &gt; 0 &amp;&amp; max &gt; 0){
                    minmax = '(' + min + ' to ' + max + ')';
                }
                h+='&lt;div class=group data-grp='+key+' data-max='+Cos[fullcoption[key][0].coption_id]['grpmax']+'&gt;&lt;b&gt;'+Cos[fullcoption[key][0].coption_id]['grpname']+' '+minmax+'&lt;/b&gt;&lt;div class=row&gt;' ;
                fullcoption[key].forEach(option =&gt; {
                    var BTN = '&lt;a class="waves-effect waves-light add off"&gt;&lt;/a&gt;';
                    var lcoption = 'co' + option.coption_id;
                    //console.log('lcoption: ' + lcoption);
                    var soldout = "";
                    if(myInv[lcoption] !== undefined){
                        //console.log("lcoption q=" + myInv[lcoption]);
                        if(Number(myInv[lcoption]) == 0){
                            //console.log(lcoption + " is sold out");
                            soldout = "modsoldout"
                        }

                    }
                    if(soldout != "") BTN="";
                    if(option.price &gt; 0) h += '&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-name="'+option.name+'" data-p='+option.price+' data-id='+option.coption_id+'&gt;'+option.name+BTN+'&lt;b&gt;+$'+option.price+'&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;';
                    else h += '&lt;div class="col s6 m4 l3"&gt;&lt;div class="waves-effect option '+soldout+'" v=0 data-name="'+option.name+'" data-p='+option.price+' data-id='+option.coption_id+'&gt;'+option.name+BTN+'&lt;/div&gt;&lt;/div&gt;';
                });
                h+='&lt;/div&gt;&lt;/div&gt;';
            }

            h += '&lt;div class=row&gt;&lt;div class="col s12 m12 l12 center"&gt;'
            if ( required &gt; 0 )
                h+='&lt;a id=nestedpopA data-gmod='+gmod+' class=disabled data-p='+Cos[mid]['price']+' data-iid="'+mid+'"&gt;$'+Cos[mid]['price']+' - ADD TO ORDER&lt;/a&gt;';
            else
                h+='&lt;a id=nestedpopA data-gmod='+gmod+' data-p='+Cos[mid]['price']+' data-iid="'+mid+'"&gt;$'+Cos[mid]['price']+' - ADD TO ORDER&lt;/a&gt;';
            h += '&lt;/div&gt;&lt;/div&gt;';

            console.log("pressed");
            if($(this).hasClass('on')){
                chks--;


                $('#nestedmsg .modal-content').html(h);
                $('#nestedmsg').modal({dismissible:true});
                $('#nestedmsg').modal('open');
                $('#nestedremove').show();
                if(ids !== ''){
                    $('#nestedremove').show();
                    console.log('has nested already selected');
                    var idsArray = ids.split('-');
                    console.log(idsArray);
                    idsArray.forEach(function(id) {
                        $('#nestedpop .option[data-id="' + id + '"]').each(function() {
                            $(this).trigger('click');
                        });
                    });
                }
                /*
                var nestedprice = Number($(this).closest('.option').find('#nesteddesc').attr('data-p'));
                var price = Number($(this).closest('.option').attr('data-p'));
                $(this).closest('.option').find('#nesteddesc').attr('data-p', '0').text('');
                $(this).closest('.option').find('#nesteddesc').attr('data-ids','');
                $(this).removeClass('on').addClass('off');
                $(this).removeClass('disabled');
                $(this).closest('.option').removeClass('checked');
                $(this).closest('.option').find('b').text('+$' + price.toFixed(2));
                $(this).closest('.option').attr({v:0});
                var totalprice = Number($('#popA').data('p'));
                totalprice -= nestedprice;
                $('#popA').data({p:totalprice}).text('$'+totalprice.toFixed(2)+' - ADD TO ORDER');
                $('#popA').attr('data-p', totalprice);*/
                if ( chks &gt;= groupmax ) {
                    page.find('a.add').addClass('disabled');
                    page.find('a.nested').addClass('disabled');

                } else {
                    page.find('a.add').removeClass('disabled');
                    page.find('a.nested').removeClass('disabled');

                }
            }else{
                chks++;
                if(chks &gt; groupmax) return;
                $('#nestedmsg .modal-content').html(h);
                $('#nestedmsg').modal({dismissible:true});
                $('#nestedmsg').modal('open');
                $('#nestedremove').hide(); 
                if(ids !== ''){
                    $('#nestedremove').show();
                    console.log('has nested already selected');
                    var idsArray = ids.split('-');
                    console.log(idsArray);
                    idsArray.forEach(function(id) {
                        $('#nestedpop .option[data-id="' + id + '"]').each(function() {
                            $(this).trigger('click');
                        });
                    });
                } 
           }
        });
        $(document).on('click','#nestedremove',function(){
            var optionid = $('#nestedpop').attr('data-iid');
            console.log('option-id:' +optionid);
            var option = $('#pop').find('.option[data-id="'+optionid+'"]');
            if(option.length &gt; 0) console.log('found option');
            var nestedprice = Number(option.find('#nesteddesc').attr('data-p'));
            var price = Number(option.attr('data-p'));
            option.find('#nesteddesc').attr('data-p', '0').text('');
            option.find('#nesteddesc').attr('data-ids','');
            option.find('a.nested').removeClass('on').addClass('off');
            option.find('a.nested').removeClass('disabled');
            option.removeClass('checked');
            option.find('b').text('+$' + price.toFixed(2));
            option.attr({v:0});
            var totalprice = Number($('#popA').data('p'));
            totalprice -= nestedprice;
            $('#popA').data({p:totalprice}).text('$'+totalprice.toFixed(2)+' - ADD TO ORDER');
            $('#popA').attr('data-p', totalprice);
            $('#nestedmsg').modal('close');
        });
        //add and select nested modifiers
        $(document).on('click','#nestedpop .option a.add',function(){
            var option=$(this).closest('.option');
            var page=$(this).closest('.group');
            var max=page.data('max');
            if ( max == 0 ) max=999;
            var chks=0;
            page.find('.checked').each(function(){
                var v=Number($(this).attr('v'));
                chks+=v;
            });
            //var q=Number(option.find('u').text());
            //console.log('q: '+q);
            var p=Number(option.data('p'));
            var price=Number($('#nestedpopA').data('p'));
            var q=1;
            if ( $(this).hasClass('off') ) {
                chks++;
                if (chks &lt;= max) {
                    $(this).removeClass('off').addClass('on');
                    option.addClass('checked');
                    price+=p;
                    $('#nestedpopA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
                    $('#nestedpopA').attr('data-p', price);
                }
            } else {
                chks--;
                $(this).removeClass('on').addClass('off');
                option.removeClass('checked');
                price-=p;
                $('#nestedpopA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
                $('#nestedpopA').attr('data-p', price);
                q=0;
            }
            option.attr({v:q});
            if ( chks &gt;= max ) {
                page.find('a.add').addClass('disabled');
            } else {
                page.find('a.add').removeClass('disabled');
            }
            mynestedPopA();
            return false;
 
        });
        //after selected, allows to select another one because the + button is disabled
        $(document).on('click','#nestedpop .option',function(e){
                if ( $(e.target).hasClass('del') ) return;
                if ( $(e.target).hasClass('add') ) return;
                var page=$(this).closest('.group');
                var max=page.data('max');
                if ( max == 1 ) {
                if ( page.find('.option').length == 1 ) {
                $(this).children('a.add').trigger('click');
                } else {
                page.find('.option.checked').children('a.add').trigger('click');
                $(this).children('a.add').trigger('click');
                }
                } else {
                $(this).children('a.add').trigger('click');
                }
        });
        //checks if the "Add to Order" can be clicked or not
        function mynestedPopA(){
            if ( $('#nestedpopA').data('gmod') == 1 ) {
                var mid=$('#nestedpopA').data('iid');
                var co=Cos[mid];
                var coptions = Cos[mid]['cgrp'];
                var coptionlist=[];
                coptions.split(/-/).forEach((c)=&gt;{
                    if ( c !== '' ) coptionlist.push(c);
                });
                var fullcoption = [];
                for (let i = 0; i &lt; coptionlist.length; i++) {
                        var result = Object.entries(Cos).filter(([key, sublist]) =&gt; {
                        return sublist['grp'] !== undefined &amp;&amp; sublist['grp'] === coptionlist[i];
                    }).map(([key, sublist]) =&gt; {
                        // Map the filtered results to the desired object structure
                        return {
                            coption_id: sublist['coption_id'],
                            name: sublist['name'],
                            price: sublist['price'],
                            grpmin: sublist['grpmin'],
                            grpmax: sublist['grpmax'],
                            picture: sublist['picture']
                        };
                    });
                    fullcoption[coptionlist[i]] = result.length ? result : [];
                }
                var disable=0;
                $('#nestedpop .group').each(function(){
                        var grp=$(this).data('grp');
                        var min=Number(fullcoption[grp][0].grpmin);
                        if ( min &gt; 0 ) {
                        var chks=0;
                        $(this).find('.checked').each(function(){
                                chks+=Number($(this).attr('v'));
                                });
                        if ( chks &lt; min )
                        disable=1;
                        }
                        });
                disable == 1 ?  $('#nestedpopA').addClass('disabled') : $('#nestedpopA').removeClass('disabled');
            }
        };
        $(document).on('click','#nestedpopA',function(){
            var mid=$(this).data('iid');
            myNestedOption();
        });
        
        
        function myNestedOption(){
            //var oldprice = Number($('nestedpop').attr('data-p');
            $('#nestedmsg').modal('close');
            $('body').css({overflow:'visible'});
            
            var mid=$('#nestedpop').data('iid');
           
            var nested='';
            var nestedids='';
            if ( /\d-$/.test(Cos[mid]['cgrp']) ) {
                var numchecks = $('#nestedpop .option.checked').length;
                if ( $('#nestedpop .option.checked').length &gt; 0 ) {
                    $('#nestedpop .option.checked').each(function(){
                            var v=Number($(this).attr('v'));
                            if ( isNaN(v) || v== 0 ){
                                nested+=$(this).data('name').trim();
                                nestedids+=$(this).data('id');
                            }
                            else {
                                while(v){
                                    numchecks--;
                                    v--;
                                    if(numchecks != 0){
                                        nested+=$(this).data('name').trim() + ', ';
                                        nestedids+=$(this).data('id') + '-';
                                    }else{
                                        nested+=$(this).data('name').trim();
                                        nestedids+=$(this).data('id');
                                    }
                                }
                            }
                            });
                }
            }
            var option = $('.option[data-id="'+mid+'"]');
            var nestedprice = Number($('#nestedpopA').data('p'));
            var group = $('.option[data-id="'+mid+'"]').closest('.group');
            var max = group.data('max');
            if(max == 0) max=999;
            var numchecks = 0;
            
            group.find('.checked').each(function(){ //get number of checks in the current group of mods
                var v = Number($(this).attr('v'));
                numchecks += v;
                console.log('numchecks: ' + numchecks);
            });
            
            var optionprice = Number(option.data('p'));
            var totalprice = Number($('#popA').data('p'));
            var quantity = 1;

            if($('.option[data-id="'+mid+'"] .nested').hasClass('off')){ //If not selected yet
                numchecks++;
                if(numchecks &lt;= max){
                    
                    $('.option[data-id="'+mid+'"] .nested').removeClass('off').addClass('on');
                    option.addClass('checked');

                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedprice});
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedids});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-ids', nestedids);
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-p', nestedprice);
                    $('.option[data-id="'+mid+'"] #nesteddesc').html(nested);
                    totalprice += nestedprice;
                    option.find('b').html('+$'+nestedprice.toFixed(2));
                    $('#popA').data({p:totalprice}).text('$'+totalprice.toFixed(2)+' - ADD TO ORDER');
                }else{
                    console.log('in max');
                    group.find('.option.checked').children('a.nested').removeClass('on').addClass('off');
                    group.find('.option.checked').children('#nesteddesc').html('');
                    group.find('.option.checked').attr({v:0});

                    group.find('.option.checked').children('#nesteddesc').data({p:''});
                    group.find('.option.checked').children('#nesteddesc').attr('data-ids', '');

                    group.find('.option.checked').children('#nesteddesc').data({p:0});
                    group.find('.option.checked').children('#nesteddesc').attr('data-p', 0);
                    


                    var oldcheckedprice = group.find('.option.checked').data('p');
                    
                    group.find('.option.checked').removeClass('checked');
                    totalprice = totalprice - oldcheckedprice + optionprice;
                    $('.option[data-id="'+mid+'"] .nested').removeClass('off').addClass('on');
                    option.addClass('checked');
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedprice});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-p', nestedprice);
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedids});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-ids', nestedids);
                    $('.option[data-id="'+mid+'"] #nesteddesc').html(nested);
                    totalprice += nestedprice;
                    option.find('b').html('+$'+nestedprice+'.00');

                    $('#popA').data({p:totalprice}).text('$'+totalprice.toFixed(2)+' - ADD TO ORDER');
                }
            }else{
                if(numchecks &lt;= max){
                    console.log('editing');
                    quantity = 1;
                    var oldprice = Number($('.option[data-id="'+mid+'"] #nesteddesc').attr('data-p'));
                    console.log('old price:' + oldprice);
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedprice});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-p', nestedprice);
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedids});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-ids', nestedids);
                    $('.option[data-id="'+mid+'"] #nesteddesc').html(nested);
                    totalprice = totalprice - oldprice + nestedprice;
                    console.log('nested price: ' + nestedprice + ' totalrpice:' + totalprice);
                    option.find('b').html('+$'+nestedprice+'.00');
                    $('#popA').data({p:totalprice}).text('$'+totalprice.toFixed(2)+' - ADD TO ORDER');     
                }else{
                    numchecks--;
                    quantity = 0;
                    $('.option[data-id="'+mid+'"] .nested').removeClass('on').addClass('off');
                    option.removeClass('checked');
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedprice});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-p', nestedprice);
                    $('.option[data-id="'+mid+'"] #nesteddesc').data({p:nestedids});
                    $('.option[data-id="'+mid+'"] #nesteddesc').attr('data-ids', nestedids);
                    $('.option[data-id="'+mid+'"] #nesteddesc').html(nested);
                    totalprice -= optionprice;
                    option.find('b').html('+$'+nestedprice+'.00');
                    $('#popA').data({p:totalprice}).text('$'+totalprice.toFixed(2)+' - ADD TO ORDER');
                }
                
                //quantity=0
            }

            option.attr({v:quantity});
            
            if(numchecks &gt;= max){ //if the number of checked mods reaches the max
                group.find('a.nested').addClass('disabled');
                group.find('a.add').addClass('disabled');


            }else{
                group.find('a.nested').removeClass('disabled');
                group.find('a.add').removeClass('disabled');
            }
        }
		$(document).on('click','#pop .option a.add',function(){
				var option=$(this).closest('.option');
				var page=$(this).closest('.group');
				var max=page.data('max');
				if ( max == 0 ) max=999;
				var chks=0;
				page.find('.checked').each(function(){
						var v=Number($(this).attr('v'));
						chks+=v;
                        console.log('chks: ' + chks);
						});

				var q=Number(option.find('u').text());
				var p=Number(option.data('p'));
				var price=Number($('#popA').data('p'));
				if ( $(this).hasClass('qty') ) {
                    if ( chks &gt;= max ) return;
                    option.addClass('checked');
                    chks++;
                    if ( isNaN(p) || q == 0  &amp;&amp; chks &lt;= max) {
                        q=1;
                        option.find('u').text(1).show();
                        option.find('a.del').show();
                        price+=p;
                        $('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
                    } else if ( q &gt; 0  &amp;&amp; chks &lt;= max ) {
                        q++;
                        option.find('u').text(q);
                        price+=p;
                        $('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
                    }
				} else {
					var q=1;
					if ( $(this).hasClass('off') ) {
                        chks++;
						if (  chks &lt;= max) {
							$(this).removeClass('off').addClass('on');
							option.addClass('checked');
							price+=p;
							$('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
						}
					} else {
						chks--;
						$(this).removeClass('on').addClass('off');
						option.removeClass('checked');
						price-=p;
						$('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
						q=0;
					}
				}
				option.attr({v:q});
				if ( chks &gt;= max ) {
					page.find('a.add').addClass('disabled');
                    page.find('a.nested').addClass('disabled');
				} else{
					page.find('a.add').removeClass('disabled');
                    page.find('a.nested').removeClass('disabled');
                }
				myPopA();
				return false;
		});
		function myPopA(){
			if ( $('#popA').data('gmod') == 1 ) {
				var iid=$('#popA').data('iid');
				var co=Iids[iid]['co'];
				var disable=0;
				$('#pop .group').each(function(){
						var grp=$(this).data('grp');
						var min=Number(co[grp]['min']);
						if ( min &gt; 0 ) {
						var chks=0;
						$(this).find('.checked').each(function(){
								chks+=Number($(this).attr('v'));
								});
						if ( chks &lt; min )
						disable=1;
						}
						});
				disable == 1 ?  $('#popA').addClass('disabled') : $('#popA').removeClass('disabled');
			}
		};
		function myOption(q) {
			$('#msg').modal('close');
			$('body').css({overflow:'visible'});
			var iid=$('#pop').data('iid');
			if ( /\d-$/.test(Iids[iid]['coptions']) ) {
				if ( $('#pop .option.checked').length &gt; 0 ) {
					$('#pop .option.checked').each(function(){
							var v=Number($(this).attr('v'));
							if ( isNaN(v) || v== 0 ){
				                if($(this).find('a.nested').length &gt; 0){
                                        iid+='g'+$(this).data('id')+'m[' + $(this).find('#nesteddesc').attr('data-ids') + ']';
                                    }else{
                                        iid+='g'+$(this).data('id')+'m0';
                                    }
                            }else {
                                while(v){
                                    v--;
                                    if($(this).find('a.nested').length &gt; 0){
                                        iid+='g'+$(this).data('id')+'m[' + $(this).find('#nesteddesc').attr('data-ids') + ']';
                                    }else{
                                        iid+='g'+$(this).data('id')+'m0';
                                    }
                                }
							}
							});
				}
			} else {
				if ( $('#pop .option.checked').length &gt; 0 ) {
					if ( /-/.test(iid) )
						iid+='o';
					else
						iid+='-0o';
					$('#pop .option.checked').each(function(){
							var v=Number($(this).attr('v'));
							if ( isNaN(v) || v== 0 )
							iid+=$(this).data('id')+'|';
							else {
							while(v){
							v--;
							iid+=$(this).data('id')+'|';
							}
							}
							});
					iid=iid.slice(0,-1)+'!';
				}
			}
            console.log('moption:' + iid);
			var cnote=$('#msg input').val();
			if ( q )
				myOrder(iid,q,cnote);
			else
				myOrder(iid,1,cnote);
		}

		function myDiid(iid){
            var nestedmods = [];
            if(/\[.*?\]/g.test(iid)){
                var regex = /g(\d+)m\[([^\]]+)\]/g;
                var matches;
                while ((matches = regex.exec(iid)) !== null) {
                    var gValue = matches[1]; // Extracts mod group
                    var bracketValues = matches[2].split('-'); //Extracts nested mod ids
                    
                    nestedmods.push({
                        mod: gValue,
                        nestedmod: bracketValues
                    });
                }
                console.log(nestedmods);
                iid = iid.replace(/\[.*?\]/g, '0');
                console.log("cleaned iid:" + iid);
            }
			var i=iid.toString().split(/-/);
			if ( i.length &gt; 1 ) {
				iid=i[0];
				if ( i[1] != '' )
					iid+='-'+i[1];
			}
			var midd='';
			if ( /g/.test(iid) ) {//modifiers
				var id=iid.toString().split(/g/);
				miid=id[0];
				var c=Cats[Iids[miid]['category_id']]['category'];
				var p=parseFloat(Iids[miid]['price']);
				var d=Iids[miid]['desc'];
				var pic=Iids[miid]['picture'];
				var n='&lt;a class=mainname&gt;'+Iids[miid]['name']+'&lt;/a&gt;&lt;div class=modname&gt;';
				for ( var i=1;i&lt;id.length;i++) {
                    n += '&lt;div id=modgrp&gt;';
					var coid=id[i].replace(/m\d+/,'');
                    var found = nestedmods.find(item =&gt; item.mod === coid);
                    p+=parseFloat(Cos[coid]['price']);
                    
                    lang == 'en' ? n+='&lt;div class=mainmod data-id='+coid+'&gt;'+Cos[coid]['name'] : n+='&lt;div class=mainmod data-id='+coid+'&gt;'+Cos[coid]['ch_name'];
                    if(found){
                        found.nestedmod.forEach(function(value) {
                            console.log('Nestedmod value:', value);
                            p += parseFloat(Cos[value]['price']);
                            n += '&lt;div class=nestedmod data-id='+value+'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+' + Cos[value]['name'] + '&lt;/div&gt;';
                        });
                    }
                    n += '&lt;/div&gt;&lt;/div&gt;'
                    

				}
				n+='&lt;/div&gt;';
			} else if ( /o/.test(iid) ) {//local modifier
                console.log('Diid() split at o called');
				var id=iid.toString().split(/o/);
				miid=id[0].replace(/-0$/,'');
				var cos=id[1].replace(/\!/,'').split(/\|/);
				var c=Cats[Iids[miid]['category_id']]['category'];
				var p=parseFloat(Iids[miid]['price']);
				var n='&lt;a class=mainname&gt;'+Iids[miid]['name']+'&lt;/a&gt;&lt;div class=modname&gt;';
				for ( var i in cos ) {
					if ( cos[i] != '' ) {
						p+=parseFloat(Cos[cos[i]]['price']);
						lang == 'en' ? n+=Cos[cos[i]]['name']+'&lt;br&gt;' : n+=Cos[cos[i]]['ch_name']+'&lt;br&gt;';
					}
				}
				n+='&lt;/div&gt;';
				var d=Iids[miid]['desc'];
				var pic=Iids[miid]['picture'];
			} else {//no modifiers
				miid=iid;
				var ciid=iid.toString().replace(/\D.*/,'');
				var c=Cats[Iids[ciid]['category_id']]['category'];
				var p=1*Iids[iid]['price'];
				var n=Iids[iid]['name'];
				var pic=Iids[iid]['picture'];
				var d=Iids[iid]['desc'];
			}
			return {i:miid,p:p,n:n,c:c,d:d,pic:pic};
		}

		function flyBox(e,iid){
			e.closest('.card').addClass('selected');
			var offset=e.offset();
			var n=myDiid(iid)['n'];

			$('&lt;div class=clone&gt;'+n+'&lt;/div&gt;').css({
				left: parseInt(offset.left - 10) + 'px',
				top: parseInt(offset.top - 10) + 'px'
				}).appendTo('body');

			var cart = $('#shcart').offset();
			var left=cart.left+$('#shcart').width()-60;
			$('.clone').delay(50).animate({top:parseInt(cart.top+10)+'px',left:left+'px',height:'10px','width':'40px'},500,function(){
		$(this).remove();
			});
		}
$(document).on('click','#moption a',function(){
		var p=Number($('#msg .option.curmoption').data('p'));
		if ($(this).hasClass('add') ) {
		var v=Number($('#msg .option.curmoption').attr('v'));
		if ( isNaN(v) )
		v=2;
		else
		v++;
		$('#msg .option.curmoption').attr({v:v});
		var price=Number($('#popA').data('p'));
		price+=p;
		$('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
		} else {
		var v=Number($('#msg .option.curmoption').attr('v'));
		v--;
		if ( v &lt; 1 ) {
		$('#msg .option.curmoption').attr({v:''}).removeClass('checked');
		} else
		$('#msg .option.curmoption').attr({v:v});
		var price=Number($('#popA').data('p'));
		price-=p;
		$('#popA').data({p:price}).text('$'+price.toFixed(2)+' - ADD TO ORDER');
		}

		var page=$('#msg .option.curmoption').closest('.carousel-item');
		var grp=page.data('grp');
		var grpc=page.data('grpc');
		var max=page.data('max');
		var grps=page.data('grps');
		var chks=0;
		page.find('.checked').each(function(){
				var v=Number($(this).attr('v'));
				if ( isNaN(v) ) {
				chks++;
				} else {
				chks+=v;
				}
				});
		if ( grpc &lt; grps ) {
			$('#msg a.check').removeClass('modal-close');
			$('#msg a.check').children('i').text('arrow_forward');
		} else {
			$('#msg a.check').children('i').text('check');
		}

		if ( chks == max ) {
			page.find('a:not(.checked)').addClass('disabled');
			$('#msg a.check').removeClass('disabled').addClass('pulse');
		} else  {
			page.find('a:not(.checked)').removeClass('disabled');
		}
		$('#msg .option.curmoption').removeClass('curmoption');
});

function myOrder(iid,nq=1,cnote,el){
	console.log(' ---myOrder');
    var oiid = iid;
    var nestedmods = [];
    if(/\[.*?\]/g.test(iid)){
        var regex = /g(\d+)m\[([^\]]+)\]/g;
        var matches;
        while ((matches = regex.exec(iid)) !== null) {
            var gValue = matches[1]; // Extracts mod group
            var bracketValues = matches[2].split('-'); //Extracts nested mod ids

            nestedmods.push({
                mod: gValue,
                nestedmod: bracketValues
            });
        }
        iid = iid.replace(/\[.*?\]/g, '0');
    }

	if ( geoF == 1 ) {
		geoFail();
		return false;
	}
	var q=0,p=0,n='';
	//console.log('seatid: '+seatid);
	//console.log('iid: '+iid);
	//console.log('nq: '+nq);
	//console.log('cnote: '+cnote);
	if ( seatid &gt; 0 &amp;&amp; nq &gt; 0 ) {
		var b=seatid*10000;
		//console.log('b: '+b);
		if ( /--\d/.test(iid) ) {
			iid=iid.replace(/--\d+/,'')+'--'+b;
		} else {
			if ( /-/.test(iid) ) iid+='--'+b;
			else iid+='---'+b;	
		}
	}
	if ( nq == 0 ) {
		$('#list li[data-iid="'+iid+'"]').remove();
	} else {
		if ( $('#list li[data-iid="'+iid+'"]').length == 1 &amp;&amp; ( $('#sp').is(':hidden') || nq &lt; 0 ) ) {
			var q=Number($('#list li[data-iid="'+iid+'"]').find('.q').text());
			q+=Number(nq);
			var p=myDiid(oiid)['p']*q;
			$('#list li[data-iid="'+iid+'"]').find('.q').text(q);
			$('#list li[data-iid="'+iid+'"]').children('.p').text(p.toFixed(2));
		} else {
            console.log('Diid() iid:' +iid);
			var diid=myDiid(oiid);
			n='&lt;b class=c&gt;'+diid.c+'&lt;/b&gt;';
			if ( /lt;/i.test(diid.n) ) diid.n=diid.n.replace(/\&amp;lt;/g,'&lt;').replace(/\&amp;gt;/g,'&gt;');
			n+=diid.n;
			console.log(diid.n);
			if ( cnote ) n+='&lt;b class=cnote&gt;'+cnote+'&lt;/b&gt;';
			n+="&lt;div&gt;&lt;b class=r&gt;&lt;i class='material-icons left'&gt;remove_circle_outline&lt;/i&gt;REMOVE&lt;/b&gt; &lt;b class=a&gt;&lt;i class='material-icons left'&gt;add_circle_outline&lt;/i&gt;ADD&lt;/b&gt;&lt;/div&gt;";
			p=diid.p * nq;
			if ( seatid &gt; 0 &amp;&amp; qrtocfg['mark'] == 1 ) var row='&lt;li class="cust flex seat" data-iid="'+iid+'" s='+seatid+'&gt;&lt;b class="col s1 m1 l1 q"&gt;'+nq+'&lt;/b&gt;&lt;div class="col s8 m8 l8 n"&gt;'+n+'&lt;/div&gt;&lt;b class="col s3 m3 l3 p"&gt;'+p.toFixed(2)+'&lt;/b&gt;&lt;/li&gt;';
			else var row='&lt;li class="cust flex" data-iid="'+iid+'" s='+seatid+'&gt;&lt;b class="col s1 m1 l1 q"&gt;'+nq+'&lt;/b&gt;&lt;div class="col s8 m8 l8 n"&gt;'+n+'&lt;/div&gt;&lt;b class="col s3 m3 l3 p"&gt;'+p.toFixed(2)+'&lt;/b&gt;&lt;/li&gt;';
			$(row).appendTo('#list');
		}
	}
	mySum();
}

$('.modal').modal({onCloseEnd:myClose});
$('.sidenav').sidenav({edge: 'right'});

$('#pickup').on('click',function(e){
	console.log('pickup clicked');
	pickuplen= $('#pickup').length;
	delivlen= $('#delivery').length;
	console.log('pickuplen:'+pickuplen);
	console.log('delivlen:'+delivlen);
	if ( Closed &amp;&amp; nopreorders &amp;&amp; site!='shanghaidumpling') {
		var h="&lt;div class='row'&gt;";
		h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
		h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, We are closed! &lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
		h+="&lt;p class=center&gt;Please check back later.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
		h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large redkp'&gt;Close&lt;/a&gt;&lt;/p&gt;";
		h+="&lt;/div&gt;";
		$('#msg .modal-content').html(h);
		$('#msg').modal({dismissible:true});
		$('#msg').modal('open');
		return;
	}

		if ( $('#checkout').hasClass('po') ) {
		if (  Closed || $(e.target).hasClass('material-icons') ) {
		$('#timeh1').text('Select a Pickup Date');
		$('#timeh2').text('Desired Pickup Time');
		if ( $('#mobnav').is(':visible') ) {
		var h=$(document).height();
		$('#time').css({height:h+'px'});
		}
		$('#time').show();
		$(window).scrollTop(0);
        myTime();
		mySave();
		}
		return;
		}
		if(postmates&gt;0){
			console.log('postmates yes');
			total=$('#total').attr('v');
			total=total-kFee+kFeeo;
			kFee=kFeeo;
			$('#kfee').attr({v:kFee.toFixed(2)}).show();
			if(kFee==0) $('#kfee').hide();
			$('#total,#displaytotal').attr({v:total.toFixed(2)}).show();
			//console.log('kfee:'+kFee+' total:'+total);
		}
		dFee=0;
		$(this).removeClass('off');
		if( $('#sub').attr('v') &gt; 0 )
            $('#checkout').removeClass('disabled') 
        else {
            $('#checkout').addClass('disabled');
                    console.log('DISABLE 19 checkout ****');
        }

		$('#checkout').attr({ad:'',a:''});
		$('#caddress').hide();
		$('#delivery').attr({v:''}).addClass('off');
		if (  Closed || $(e.target).hasClass('material-icons') ) {
			$('#timeh1').text('Select a Pickup Date');
			$('#timeh2').text('Desired Pickup Time');
			if ( $('#mobnav').is(':visible') ) {
				var h=$(document).height();
				$('#time').css({height:h+'px'});
			}
			$('#time').show();
			$(window).scrollTop(0);
            myTime();
			mySave();
			return;
		}
        
		spot=Cookies.get('spot');
		if ( spot ) spot=spot.replace(/\+/g,' ');
		if ( $('#maddress li.maddress').length &gt; 1 &amp;&amp; (spot == '' || typeof spot == 'undefined' )) {
			$('#maddress').modal('open');
		}
		$('#pickup').attr({v:pickup_asap});
		mySave();
		mySum();
});
$('#time i.close, #addcancel').on('click',function(){
		$('#time li.on').removeClass('on');
		$('#day0').addClass('on');
		$('#asap').removeClass('off').addClass('on');
		$('#later').removeClass('on').addClass('off');
		$('#laters').hide();
		Closed ? $('#closeMsg').show() : $('#closeMsg').hide();
		$('#time').hide();
		if ( $('#delivery').attr('v') == '' ) {
		$('#delivery').addClass('off');
		//$('#checkout').addClass('disabled');
		}
		if ( $('#checkout').attr('ad') == '' ) {
		$('#delivery').hasClass('off');
		$('#pickup').removeClass('off');
		//$('#pickup').attr({v:pickup_asap});
		$('#checkout').removeClass('disabled');
		}
});
$('#addr i.close, #addcancel').on('click',function(){
		$('#addr').hide();
		if ( $('#checkout').attr('ad') == '' ) {
		$('#pickup').trigger('click');
		}
		if ( $('#notice').is(':visible') ) {
		$('#checkout').addClass('disabled');
                    console.log('DISABLE 20 checkout ****');
		}
});
$('#addsave').on('click',function(){
		var ad=$(this).data('ad');
		ad.apt=$('#apt input').val();
		ad.tnote=$('#tnote textarea').val();
		var a=$('#geo input').val();
        console.log(a);
		var addr=a.split(/,/)[0];
        var addrcity=a.split(/,/)[1];
        var addrstatezip=a.split(/,/)[2];
        var addrapt=$('#apt input').val()
		myAddress=JSON.parse(localStorage.getItem('myAddress'));

		if ( myAddress == null ) {
			myAddress=[];
			myAddress.push(ad);
		} else {
			var f=0;
			for(var i=0;i&lt;myAddress.length;i++) {
				//console.log(myAddress[i].address);
				//console.log(addr);
				if ( typeof myAddress[i] != 'object' || myAddress[i] == null )
				myAddress.splice(i,1);
				else if ( myAddress[i].address == addr ) {
					f=1;
					myAddress[i].apt=ad.apt;
					myAddress[i].tnote=ad.tnote;
				}
			}
			if ( f == 0 ) {
				myAddress.push(ad);
			}
		}
		localStorage.setItem('myAddress',JSON.stringify(myAddress));
		$('#checkout').attr({ad:JSON.stringify(ad),a:addr});
		//console.log(ad);
		//console.log(addr);
		$('#caddress').html('&lt;b&gt;Delivery Address: &lt;/b&gt;&lt;/br&gt; ' + addr + '&lt;/br&gt;' + addrcity + ', ' + addrstatezip + '&lt;/br&gt;' + addrapt).show();
		$('#addr').hide();
		$('#sub').attr('v') &gt; 0 ? $('#checkout').removeClass('disabled') : $('#checkout').addClass('disabled');
		dDist=ad.dDist;
		xAddr='dDist undefined 4';
		if ( typeof dDist == 'undefined' ) $.ajax({type:'POST',url:'ajaxdist0.php',data:{site:site,addr:xAddr,dist:'xundefined4',res:'',case:4},success:function(data){ }});
		dFee=0;
		mySave();
});
$(document).on('click','#list li b.a',function(){
		if ( isMax() ) return;
		var li=$(this).closest('li');
		var q=Number(li.children('.q').text());
		var p=Number(li.children('.p').text())/q;
		q++;
                p=p*q;
		li.children('.q').text(q);
                li.children('.p').text(p.toFixed(2));
		mySum();

		var iid=li.data('iid');
		var inviid=iid.toString().replace(/\D.*/,'');
		if ( myInv[inviid] !== undefined ) {
			if ( myInv[inviid] == q ) {
				maxInv(q);
				return false;
			}
		} 
});
$(document).on('click','#list li b.r',function(){
		var li=$(this).closest('li');
		var q=Number(li.children('.q').text());
		if ( q &gt; 1 ) {
			var q=Number(li.children('.q').text());
			var p=Number(li.children('.p').text())/q;
			q--;
               		p=p*q;
			li.children('.q').text(q);
                	li.children('.p').text(p.toFixed(2));
		} else { 
			li.slideUp().delay(300).remove();
		}
		mySum();
});
$(document).on('click','#alist li',function(e){
		if ( $(e.target).hasClass('right') ) {
		var id=$(this).closest('li').data('id');
		//delete myAddress[id];
		myAddress.splice(id,1);
		if ( myAddress.length &gt; 0 ) localStorage.setItem('myAddress',JSON.stringify(myAddress));
		else localStorage.removeItem('myAddress');
		$(this).slideUp().delay(300).remove();
		return;
		}
		$('#alist li.on').removeClass('on').addClass('off');	
		$(this).removeClass('off').addClass('on');	
		var a=$(this).text();
		var ad=$(this).data('v');
		if ( ad.apt ) $('#apt input').val(ad.apt);
		else $('#apt input').val('');
		if ( ad.tnote ) $('#tnote textarea').val(ad.tnote);
		else $('#tnote textarea').val('');

		$('#geo input').val(a.replace(/delete/,''));
		$('#addaddr').show();
		$('#faraddr').hide();
		$('#addsave').data({ad:ad});
});
$('#delivery').on('click',function(e){
		console.log('delivery clicked');
			pickuplen= $('#pickup').length;
			delivlen= $('#delivery').length;
			console.log('pickuplen:'+pickuplen);
			console.log('delivlen:'+delivlen);
		if ( Closed &amp;&amp; nopreorders) {
			var h="&lt;div class='row'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, We are closed! &lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
			h+="&lt;p class=center&gt;Please check back later.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
			h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large redkp'&gt;Close&lt;/a&gt;&lt;/p&gt;";
			h+="&lt;/div&gt;";
			$('#msg .modal-content').html(h);
			$('#msg').modal({dismissible:true});
			$('#msg').modal('open');
			return;
		}
		if ( $('#checkout').hasClass('po') ) return;
		$(this).removeClass('off');
		$('#checkout').attr('a') != '' ? $('#checkout').removeClass('disabled') : $('#checkout').addClass('disabled');
		$('#pickup').attr({v:''}).addClass('off');
		if ( $('#checkout').attr('ad') != '' ) {
			if ( Closed || $(e.target).hasClass('material-icons') ) {
				if ( $('#delivery').attr('v') == '' || $(e.target).hasClass('material-icons') ) {
					$('#timeh1').text('Select a Delivery Date');
					$('#timeh2').text('Desired Delivery Time');
					if ( $('#mobnav').is(':visible') ) {
						var h=$(document).height();
						$('#time').css({height:h+'px'});
					}
					$('#time').show();
					myTime();
					return;
				}
			}
		}
		if ( $('#delivery').attr('v') == '' ) $('#delivery').attr({v:delivery_asap});
		var alist='',alist2=[];
		myAddress=JSON.parse(localStorage.getItem('myAddress'));
		if ( myAddress == null ) myAddress=[];
		for(var i=0;i&lt;myAddress.length;i++) {
			if ( typeof myAddress[i] != 'object' || myAddress[i] == null )
				myAddress.splice(i,1);
			else {
				var addr=myAddress[i].address+', '+myAddress[i].city+', '+myAddress[i].state+' '+myAddress[i].zip;
				if ( alist2.indexOf(addr) &gt; -1 )
					myAddress.splice(i,1);
				else { 
					alist2.push(addr);
					alist+='&lt;li class=off data-id='+i+' data-v=\''+JSON.stringify(myAddress[i])+'\'&gt;'+addr+'&lt;i class="material-icons right"&gt;delete&lt;/i&gt;&lt;/li&gt;';
				}
			}
		}
		localStorage.setItem('myAddress',JSON.stringify(myAddress));
		$('#alist').html(alist);
		$('#addr').show();
        $(window).scrollTop(0);
		$('#apt input').val('');
		$('#tnote textarea').val('');
		$('#faraddr,#addaddr').hide();
		$('#geo input').val('').focus();
});

$('#geo input').on('keyup',function(){
		$('#faraddr,#addaddr').hide();
});

$('#geo input').geocomplete({country:'US',componentRestrictions:{postalCode:zip}}).bind('geocode:result', function(event, result){
		$('#addaddr').hide();
		var data={};
		var lat=result.geometry.location.lat().toFixed(7);
		var lng=result.geometry.location.lng().toFixed(7);
		data.geo={lat:lat,lng:lng};
		$(this).val(result.formatted_address);
		var addr=result.formatted_address.split(/, /);
		data.address=addr[0];
		data.city=addr[1];
		data.state=addr[2].split(/\s/)[0];
		data.zip=addr[2].split(/\s/)[1];
		var address=result.formatted_address;
		if(postmates&gt;0){
		mode='quote';
		console.log('add address doordash ajax call');
		console.log('origin: '+storeAddress);
		console.log('dest  : '+address);
		console.log('unit  : '+unit);
		$.ajax({type:'POST',url:'ajaxdoordash.php',data:{origin:storeAddress,dest:address,unit:unit,mode:mode,site:site, where:'newAddress'},success:function(data1){
				console.log('add address doordash ajax called success');
				if(!data1){
				$('#faraddr').show();
				$('#addaddr').hide();
				console.log('returned false from doordash');
				}else {
				data2=JSON.parse(data1);
				console.log(data2);
				ferrors=data2['field_errors'];
				if(typeof ferrors !=='undefined'){
				console.log('field error');
				$('#addaddr').hide();
				$('#faraddr').show();
				} else {
				dfee=data2['fee']/100;
				dfee=postmates;
				kFee=kFeeo+dfee;
				//if(postmates&gt;1) kFee=kFee-3;
				console.log('kFee:'+kFee);
				console.log('kFeeo:'+kFeeo);
				if(kFeeo==0) kFee+=2;
                                else kFee+=1;
				dfee=postmates;
				kFee=postmates;
				$('#kfee').attr({v:kFee.toFixed(2)}).show();
				total=$('#total').attr('v');
				total=Number(total)+dfee;
				$('#total,#displaytotal').attr({v:total.toFixed(2)}).show();
				//$('#checkout').attr({v:total.toFixed(2)}).show();
				$('#checkout').attr({v:total.toFixed(2)});
				dfee=0;
				dFee=0;
				delivery_asap=data2['duration']+' mins.';
				$('#delivery').attr({v:delivery_asap});
				console.log('add address doordash dfee:'+dfee +' kfee:'+kFee +' delivery_asap:'+delivery_asap);
				//$('#dfee').attr({v:dFee.toFixed(2)}).show();
				$('#addaddr').show();
				data.apt=$('#apt input').val();
				data.tnote=$('#tnote textarea').val();
				$('#addsave').data({ad:data});
				}
				}
		}});

		} else if(postmates==99){
			mode='quote';
			console.log('add address postmates ajax call');
			$.ajax({type:'POST',url:'ajaxpostmates.php',data:{origin:storeAddress,dest:address,mode:mode},success:function(data1){
					console.log('add address postmates ajax called success');
					if(!data1){
					$('#faraddr').show();
					$('#addaddr').hide();
					console.log('returned false from postmate');
					}else {
					data2=JSON.parse(data1);
					console.log(data2);
					$dduration=data2['duration'];
					if(Number($dduration)&gt;54){
					$('#faraddr').show();
					$('#addaddr').hide();
					console.log(' pm time too long');
					} else {
					dfee=data2['fee']/100;
					kFee=kFeeo+dfee;
					if(postmates&gt;1) kFee=kFee-postmates;
					if(kFeeo==0) kFee+=2;
                                        else kFee+=1;
					$('#kfee').attr({v:kFee.toFixed(2)}).show();
					total=$('#total').attr('v');
					total=Number(total)+dfee;
					$('#total,#displaytotal').attr({v:total.toFixed(2)}).show();
					//$('#checkout').attr({v:total.toFixed(2)}).show();
					$('#checkout').attr({v:total.toFixed(2)});
					dfee=0;
					dFee=0;
					delivery_asap=data2['duration']+' mins.';
					$('#delivery').attr({v:delivery_asap});
					console.log('add address postmates dfee:'+dfee +' kfee:'+kFee +' delivery_asap:'+delivery_asap);
					//$('#dfee').attr({v:dFee.toFixed(2)}).show();
					$('#addaddr').show();
					$('#faraddr').hide();
					data.apt=$('#apt input').val();
					data.tnote=$('#tnote textarea').val();
					$('#addsave').data({ad:data});
					}
					}
			}});
		}else{
			var myDistanceService = new google.maps.DistanceMatrixService();
			var dest = new google.maps.LatLng(lat,lng);
			myDistanceService.getDistanceMatrix({origins:[storeAddress],destinations:[dest],travelMode:google.maps.TravelMode.DRIVING,unitSystem:google.maps.UnitSystem.IMPERIAL},function(response,status){
					if (status == google.maps.DistanceMatrixStatus.OK) {
						dDist = response.rows[0].elements[0].distance.value * 0.000621371;
						dTime = response.rows[0].elements[0].duration.value / 60;
						if(dDist==0){
							googleres=JSON.stringify(response);
							if ( typeof address == 'undefined' ) address='address unknown 2';
							//$.ajax({type:'POST',url:'ajaxdist0.php',data:{site:site,addr:address,dist:dDist,res:googleres, case:2},success:function(data){ }});
						}
					} else {
						dDist = 999;
						dTime = 999;
					}
					console.log('api called new add. dist:'+dDist + ' dmax:'+dMax);
					logit('api called new add. dist:'+dDist + ' dmax:'+dMax);
					if ( dDist &lt; dMax ) { 
						//console.log('Dist:'+dDist+' &lt; Max:'+dMax);
						data.dDist=dDist;
						data.dTime=dTime;
						myAddress.push(data);
						localStorage.setItem('myAddress',JSON.stringify(myAddress));
						$('#faraddr').hide();
						$('#addaddr').show();
						$('#addsave').data({ad:data});
					} else {
						//console.log('Dist:'+dDist+' &gt; Max:'+dMax);
						$('#faraddr').show();
						$('#addaddr').hide();
					}
			});
		}
});

$('#later').on('click',function(){
		$('#asap').removeClass('on').addClass('off');
		$('#later').removeClass('off').addClass('on');
		$('#laters').show();
		if ( Closed ) $('#closeMsg').hide();
		myVtime();
});

function myVtime(){
	var w=$('#dlist li.on').attr('w');
	/*
	   if ( typeof w == 'undefined' ) {
	   var d=new Date();
	   w=d.getDay();
	   }
	 */
	for(var i=0;i&lt;Bhour[w].length;i++ ) {
		var b=Bhour[w][i][0].split(/:/);
		var begin=b[0]*3600+b[1]*60+300;
		if ( $('#day0').hasClass('on') &amp;&amp; $('#later').hasClass('on') ) {
			var cd = new Date();
			var cbegin=cd.getHours()*3600+cd.getMinutes()*60+cd.getSeconds();
			if ( $('#pickup').hasClass('off') ) cbegin+=deliverytime*60;
			else cbegin+=pickuptime*60;
			if ( cbegin &gt; begin ) begin=cbegin;
		}
		//console.log('pickuptime:'+pickuptime);
		//console.log('deliverytime:'+deliverytime);
		var e=Bhour[w][i][1].split(/:/);
		var end=e[0]*3600+e[1]*60;
		if ( isNaN(begin) ) begin=0;
		if ( isNaN(end) ) end=0;
		$('#laters li').each(function(){
				var id=$(this).data('id');	
				if ( i == 0 ) {
				if ( id &lt; begin || id &gt;= end ) 
				$(this).addClass('disabled');
				else
				$(this).removeClass('disabled');
				} else {
				if ( id &gt;= begin &amp;&amp; id &lt; end ) 
				$(this).removeClass('disabled');
				}
				});
	}
};

$('#asap').on('click',function(){
		$('#laters li.on').removeClass('on');
		$('#asap').removeClass('off').addClass('on');
		$('#later').removeClass('on').addClass('off');
		Closed ? $('#closeMsg').show() : $('#closeMsg').hide();
		$('#laters').hide();
		$('#time').hide();
		if ( $('#pickup').hasClass('off') ) {
			$('#delivery').attr({v:delivery_asap});
		} else {
			$('#pickup').attr({v:pickup_asap});
		}
});

$('#dlist').on('click','li',function(){
		$('#time li.on').removeClass('on');
		$(this).addClass('on');
		var id=$(this).attr('id');
		if ( id == 'day0') {
			$('#asap,#later').show();
			$('#asap').removeClass('on').addClass('off');
			$('#later').removeClass('off').addClass('on');
			$('#laters').show();
		} else {
			$('#asap,#later').hide();
			$('#laters').show();
		}
		myVtime();
});
$('#laters').on('click','li',function(){
		$('#laters li.on').removeClass('on');
		$(this).addClass('on');
		var time=$('#dlist li.on').attr('d');
		time+=' '+$(this).text().replace(/\s/g,'');
		if ( $('#pickup').hasClass('off') ) {
			$('#delivery').attr({v:time});
		} else {
			$('#pickup').attr({v:time});
		}
		$('#time').hide();
		mySave();
});
function myCheckpro(){
	var pro=$('#pro').val();
	if  ( pro != '' ) {
		$('#pro').trigger('change');
		return true;
	} else {
		return false;
	}
}
$('#po2').on('click',function(){
		if ( myCheckpro() ) return;
		$('#checkout').trigger('click');
	});
$('#checkout').on('click',function(){
        $('#topBG').show();
        $('#sitelogo').show();
        $('#siteinfo').show();
		console.log('----checkout----');

        $('#po2,#checkout').removeClass('disabled');
        console.log('enable po2 checkout ****');

		console.log('tblid:' +tblid);
		console.log('OFF:' +OFF);
		console.log('checkout clicked discount:' +discount);
			pickuplen= $('#pickup').length;
			delivlen= $('#delivery').length;
			console.log('pickuplen:'+pickuplen);
			console.log('delivlen:'+delivlen);
        var total = Number($('#total').attr('v'));
        $('#displaytotal').attr({v:total});
		var kkm2=Cookies.get('kkm');
		console.log('cookie kkm2:');
		console.log(kkm2);

		if ( OFF == 1 &amp;&amp; tblid == 0 ) {
			var h="&lt;div class='row'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;This store is not accepting online order for now.&lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
			h+="&lt;p class=center&gt;Please call to place order. Thanks.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
			h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large'&gt;Close&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
			$('#msg .modal-content').html(h);
			$('#msg').modal({dismissible:true});
			$('#msg').modal('open');
			return;
		}
		if ( $('#pro').length == 1 &amp;&amp; myCheckpro() ) return;
		if ( $('#delivery').length == 1 &amp;&amp; enableD == 0 ) {
			location.reload(true);
			return;
		}
		if ( $('#delivery.on').length == 1 &amp;&amp; $('#pickup.on').length == 1 ) {
			location.reload(true);
			return;
		}
		if ( uid == 0 ) {
			if(apay) {
				Cookies.set('kkm','-1|||||',{domain:'.kwickmenu.com'});
			}else{
				Cookies.set('kkmCheckout',1);
				location.href='signin.php';
				return;
			}
		}
		if ( /(order|favorit)/i.test(window.location.pathname) ) {
			Cookies.set('kkmCheckout',1);
			location.href='index.php';
			return;
		}
		if ( tbl != '' ) {
			if ( qrtocfg['tblmax'] &gt; 0 &amp;&amp; tblPass == 0 ) {
				var tblmax=0;
				$('#list li').each(function(){
						tblmax+=Number($(this).find('b.q').text());
						});
				$.ajax({url:'ajaxQrt.php',data:{tid:tblid,tbl:tbl,tblmax:tblmax},success:function(data){
						var info=JSON.parse(data);
						console.log(info);
						var max=guests*qrtocfg['tblmax'];
						var time=qrtocfg['tbltime'];
						if ( ( info.c + tblmax ) &lt;= max ) {
						tblPass=1;
						$('#checkout').trigger('click');
						} else {
						var remove=tblmax - ( max - info.c );
						var h="&lt;div class='row'&gt;";
						h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
						h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, Table Limit "+max+" Reached!&lt;/h4&gt;&lt;br&gt;";
						h+="&lt;br&gt;&lt;br&gt;&lt;p class=center&gt;"+info.c+" items ordered in last "+time+" minutes.&lt;/p&gt;&lt;br&gt;";
						if ( remove &gt; 0 &amp;&amp; remove &lt; tblmax ) h+="&lt;p class=center&gt;Please wait or Remove "+remove+" items from cart.&lt;/p&gt;&lt;br&gt;";
						else h+="&lt;p class=center&gt;Please wait and try again later.&lt;/p&gt;&lt;br&gt;";
						h+="&lt;br&gt;&lt;br&gt;&lt;p class=center&gt;&lt;a class='modal-close btn-large'&gt;Close&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true});
						$('#msg').modal('open');
						}
				}});
				//console.log(qrtocfg);
				return;
			}
			if ( qrtocfg['device'] &gt; 0 ) {
				var dev=Cookies.get('dev');
				if ( typeof dev == 'undefined' ) {
					var h="&lt;div class='row'&gt;";
					h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
					h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Sorry, Over Device Limit!&lt;/h4&gt;&lt;br&gt;";
					h+="&lt;br&gt;&lt;br&gt;&lt;p class=center&gt;Order can not be placed from this device.&lt;/p&gt;&lt;br&gt;";
					h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large'&gt;Close&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
					$('#msg .modal-content').html(h);
					$('#msg').modal({dismissible:true});
					$('#msg').modal('open');
					return;
				}
			}
			if ( qrd &gt; 0 ) {
				var oqrd=Cookies.get('qrd');
				if ( oqrd &gt; 0 ) {
					var now=new Date().getTime();
					var pass=Math.ceil((now-oqrd)/1000);
					var diff=qrd*60-pass;
					if ( diff &gt; 0 ) {
						var mdiff=('0'+Math.floor(diff/60)).slice(-2);
						var sdiff=('0'+diff%60).slice(-2);
						var h="&lt;div class='row'&gt;";
						h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
						h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h5 class=center&gt;Next order can be placed in&lt;br&gt;&lt;span id=qrTD&gt;"+mdiff+" : "+sdiff+"&lt;/span&gt;&lt;/h5&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;p class=center&gt;Thanks.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large'&gt;Close&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true});
						$('#msg').modal('open');
						qrtdTimer();
						return;
					}
				}
			}
		}
		if ( $(this).hasClass('po') || ( tbl != '' &amp;&amp; qrtocfg['skip'] == 1 ) ) {
			if ( $(this).hasClass('po') ) logit(' --12a has po');
			else logit(' --12a tbl not empty, skip');
			if ( $(this).hasClass('po')) console.log('checkout PO clicked has Class po');
			else{
				console.log('tbl: '+tbl); 
				qrtocfgskip=qrtocfg['skip'];
				console.log('qrtocfgskip: '+qrtocfgskip);
			}

			pickuplen= $('#pickup').length;
			delivlen= $('#delivery').length;
			console.log('pickuplen:'+pickuplen);
			console.log('delivlen:'+delivlen);

			if ( $('#delivery').length == 1 &amp;&amp;  !$('#delivery').hasClass('off')  &amp;&amp; dDist &gt; dMax ) {
				var h="&lt;div class='row'&gt;";
				h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Current delivery address is outside our delivery area.&lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
				h+="&lt;br&gt;&lt;br&gt;";
				h+="&lt;p class=center&gt;";
				h+="&lt;a class='modal-close btn-large changead'&gt;Change&lt;/a&gt;";
				h+="&lt;/p&gt;&lt;/div&gt;";
				$('#msg .modal-content').html(h);
				$('#msg').modal({dismissible:false});
				$('#msg').modal('open');
				return;
			}
			//$(this).attr({v:''});
            var minstance = M.Modal.getInstance($('#msg'));
            if(!(minstance.isOpen)){
                var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:30% 0'&gt;&lt;b style='width:100%;text-align:center;margin-bottom:10%;'&gt;Processing...&lt;/b&gt;&lt;img src=loading.gif&gt;&lt;/div&gt;";
                $('#msg .modal-content').html(h);
                $('#msg').modal({dismissible:false,onCloseEnd:myClose});
                $('#msg').modal('open');
            }

			var d={sr:{}};
			var cp=$('#cp').val();	
			var em=$('#em').val();	
			var to=$('#total').attr('v');
			logit('to: '+to);
			//var sub=$('#sub').attr('v');
			//var tax=$('#tax').attr('v');
			d.ph=$('#ph').val().replace(/\D/g,'');
			var fn=$('#fn').val();
			var ln=$('#ln').val();
			if ( fn == '' ) {
				ln == '' ? d.cinfo='VIP|' : d.cinfo=ln+'|';
			} else {
				ln == '' ? d.cinfo=fn+'|' : d.cinfo=fn+','+ln+'|';
			}

			//if ( $('#delivery').length == 1 &amp;&amp;  $('#delivery.on').length == 1 ) 
			if ( $('#delivery').length == 1 &amp;&amp; !$('#delivery').hasClass('off') ) {
				logit('delivery length == 1 true');
				try {
					if ( typeof $('#checkout').attr('ad') !=='undefined' ){
						var ad=JSON.parse($('#checkout').attr('ad'));
					}else
						ad='';
				} catch(e){
					console.log('checkout ad error');
					//console.log(e);
					ad='';
					//ad.geo.lng='';
					//ad.geo.lat='';
				}
				d.sr.schedule=$('#delivery').attr('v');
				if ( (/ mins\.$/).test(d.sr.schedule) ) d.sr.schedule='';
				if ( typeof ad !=='undefined' ){
					if ( typeof ad.tnote !=='undefined' ){
						d.sr.tnote=ad.tnote;
					} else {
						d.sr.tnote='';
					}
				} else {
					d.sr.tnote='';
				}
				d.type='delivery';
				if ( ad.apt != '' ) d.cinfo+=ad.address+' '+ad.apt+'|';
				else d.cinfo+=ad.address+'|';
				d.cinfo+=ad.city+'|';
				d.cinfo+=ad.state+'|';
				d.cinfo+=ad.zip+'|';
				d.cinfo+=ad.geo.lat+',';
				d.cinfo+=ad.geo.lng+',';
				if ( typeof dDist != 'undefined' ) d.cinfo+=dDist.toFixed(1)+',';
				else {
					d.cinfo+=' 0,';
					xAddr='dDist undefined';
					$.ajax({type:'POST',url:'ajaxdist0.php',data:{site:site,addr:xAddr,dist:'xundefined',res:'',case:3},success:function(data){ }});
				}
				d.cinfo+=dTime.toFixed(0)+'|';
				if(postmates&gt;0) var dest=ad.address+','+ad.city+','+ad.state+','+ad.zip;
			} else {
				console.log('delivery length == 1 false');
				d.sr.schedule=$('#pickup').attr('v');
				if ( (/ mins\.$/).test(d.sr.schedule) ) d.sr.schedule='';
				d.type='pickup';
				if ( $('#maddress .maddress.checked').length == 1 ) {
					d.sr.tnote=$('#maddress .maddress.checked').text().replace(/check_box.*/,'');
					d.cinfo+=d.sr.tnote;
				}
				if ( spot != '' &amp;&amp; typeof spot != 'undefined' ) {
					d.sr.tnote=spot;
					d.cinfo+=d.sr.tnote;
				}
				d.cinfo+='|||||';
			}
			//if ( tbl != '' ) 

			if ( tblid&gt;0 ) {
				d.type='dinein';
				if ( tblid &gt; 0 ) {
					d.sr.tblid=tblid;
					d.cinfo=d.cinfo.replace(/\|/,'|'+d.sr.tblid);
				} else {
					tblid=Cookies.get('tblid');
					if ( tblid &gt; 0 ) {
						d.sr.tblid=tblid;
						d.cinfo=d.cinfo.replace(/\|/,'|'+d.sr.tblid);
					} else {
						d.sr.tblid=tbln2i[tbl];
						d.cinfo=d.cinfo.replace(/\|/,'|'+d.sr.tblid);
					}
				}
				d.cinfo=d.cinfo.replace(/\|$/,guests+'|');
				if ( qrd &gt; 0 ) {
					var now=new Date().getTime();
					var exp=new Date(new Date().getTime() + qrd * 60 * 1000);
					Cookies.set('qrd',now,{expires:exp});
					console.log(now);
					console.log(exp);
				}
			}

			if ( $('#pgift').hasClass('on') ){
				var gcard=$('#gcard').val().replace(/\D/g,'');
				d.cinfo+='Gift:'+gcard+':::';
			}

			ocinfo=d.cinfo;
			if ( $('#pcard').hasClass('on') ){
				var card=$('#card').val().replace(/\D/g,'');
				var cexp=$('#cexp').val().replace(/\D/g,'');
				var cvv=$('#cvv').val().replace(/\D/g,'');
				var czip=$('#czip').val().replace(/\D/g,'');
				d.cinfo+='Name:'+card+':'+cexp+':'+cvv+':'+czip;
			}
			if ( $('#papple').hasClass('on') ){
				var card=$('#card').val().replace(/\D/g,'');
				var cexp='1159';
				var cvv='';
				var czip='';
				//d.cinfo+='Name:'+card+':'+cexp+':'+cvv+':'+czip;
				d.cinfo= ocinfo+'Name:'+card+':'+cexp+':'+cvv+':'+czip;
				logit('--14 d.cinfo:'+d.cinfo);
			}
			if ( authnet &amp;&amp;  !$('#pcash').hasClass('on')) {
                var card=$('#card').val();
                var cexp=$('#cexp').val().replace(/\D/g,'');
                var cvv=$('#cvv').val().replace(/\D/g,'');
                var czip='';
                //d.cinfo+='Name:'+card+':'+cexp+':'+cvv+':'+czip;
                d.cinfo= ocinfo+fn+':'+card+':'+cexp+':'+cvv+':'+czip;
                d.cinfo= ocinfo+'Name:'+card+':'+cexp+':'+cvv+':'+czip;
                logit('--14 d.cinfo:'+d.cinfo);
            }
            if ( $('#trxpay').hasClass('on') ){
                    var card='1111111111111111';
                    var cexp='1133';
                    var cvv='111';
                    var czip='00000';
                    d.cinfo= ocinfo+'Name:'+card+':'+cexp+':'+cvv+':'+czip;
                    logit('--14 d.cinfo:'+d.cinfo);
                    console.log('trx card info 1111111111111111');
            }  
			if ( teconnect &amp;&amp;  !$('#pcash').hasClass('on')) {
                var card=$('#card').val();
                var cexp=$('#cexp').val().replace(/\D/g,'');
                var cvv=$('#cvv').val().replace(/\D/g,'');
				var czip=$('#czip').val();
                d.cinfo= ocinfo+fn+':'+card+':'+cexp+':'+cvv+':'+czip;
                logit('--14 d.cinfo:'+d.cinfo);
            }

			var lengthx=$('#delivery').length;
			if(postmates&gt;0 &amp;&amp;  ($('#delivery').length == 1)  &amp;&amp; !$('#delivery').hasClass('off')){
				if(1==2){ //some error, skip
					mode='quote';
					console.log('checkout quote address doordash ajax call');
					console.log('origin: '+storeAddress);
					console.log('unit  : '+unit);
					console.log('dest 1706  : '+dest);
					$.ajax({type:'POST',url:'ajaxdoordash.php',data:{origin:storeAddress,dest:dest,unit:unit,mode:mode,site:site, where:'beforeCheckout'},success:function(data1){
							console.log('add address doordash ajax called success');
							if(!data1){
							$('#faraddr').show();
							$('#addaddr').hide();
							console.log('returned false from doordash');
							}else {
							data2=JSON.parse(data1);
							console.log(data2);
							ferrors=data2['field_errors'];
							if(typeof ferrors !=='undefined'){
							console.log('field error');
							$('#faraddr').show();
							$('#addaddr').hide();
							} else {
							dfee=data2['fee']/100;
							kFee=kFeeo+dfee;
							//if(postmates&gt;1) kFee=kFee-3;
							if(kFeeo==0) kFee+=2;
							else kFee+=1;
							$('#kfee').attr({v:kFee.toFixed(2)}).show();
							total=$('#total').attr('v');
							total=Number(total)+dfee;
							$('#total,#displaytotal').attr({v:total.toFixed(2)}).show();
							//$('#checkout').attr({v:total.toFixed(2)}).show();
                                $('#checkout').attr({v:total.toFixed(2)});
                                dfee=0;
                                dFee=0;
                                delivery_asap=data2['duration']+' mins.';
                                $('#delivery').attr({v:delivery_asap});
                                console.log('add address doordash dfee:'+dfee +' kfee:'+kFee +' delivery_asap:'+delivery_asap);
                                //$('#dfee').attr({v:dFee.toFixed(2)}).show();
                                $('#addaddr').show();
                                data.apt=$('#apt input').val();
                                data.tnote=$('#tnote textarea').val();
                                $('#addsave').data({ad:data});
                                }
                                }
                        }});
                    }
                }else if(postmates==99 &amp;&amp; ($('#delivery').length == 1)  &amp;&amp; !$('#delivery').hasClass('off') ) {
                    console.log('checkout quote postmates ajax call :'+storeAddress+ ' dest:'+dest);
                    $.ajax({type:'POST',url:'ajaxpostmates.php',data:{origin:storeAddress,dest:dest,mode:'quote'},success:function(data1){
                            console.log('checkout quote postmates ajax called success');
                            if(!data1){
                            $('#faraddr').show();
                            $('#addaddr').hide();
                            console.log('returned false from postmate');
                            }else {
                            data2=JSON.parse(data1);
                            console.log(data2);
                            dfee=data2['fee']/100;
                            kFee=kFeeo+dfee;
                            if(postmates&gt;1) kFee=kFee-postmates;
                            if(kFeeo==0) kFee+=2;
                            else kFee+=1;
                            dfee=0;
                            dFee=0;
                            delivery_asap=data2['duration']+' mins.';
                            console.log('checkout quote postmates dfee:'+dfee +' kfee:'+kFee +' delivery_asap:'+delivery_asap);
                            //console.log(' sub:'+sub+' tax:'+tax+' dfee:'+dfee+' kFee:'+kFee);
                            console.log('dfee:'+dfee+' kFee:'+kFee);
                            }
                    }});
                }else{
                    kFee=kFeeo;
                }

                d.sr.tip=$('#tip').attr('v');
                d.sr.lunch=0;
                d.sr.fee=0;
                d.sr.kfee=kFee;

                var xd= $('#discount').attr('v');
                            xd = parseFloat(xd);

                            if ( discount == 0 &amp;&amp; xd&gt;0 ) {
                    d.sr.discount=Number($('#discount').attr('v')); 
                    if ( discountRate&gt;0 ){
                        d.sr.discount=discountRate; 
                        discount=discountRate; 
                    }
                    if ( discountValue&gt;0 &amp;&amp; (d.sr.discount == discountValue || discount==0)){
                        d.sr.discount=-discountValue; 
                        discount=-discountValue; 
                    }
                } else d.sr.discount=discount;
                d.o='';
                d.nestedcinfo='';
                function getCurrentDateTime() {
                    const now = new Date();

                    const year = now.getFullYear();
                    const month = String(now.getMonth() + 1).padStart(2, '0'); // Months are 0-based
                    const day = String(now.getDate()).padStart(2, '0');

                    let hours = now.getHours();
                    const minutes = String(now.getMinutes()).padStart(2, '0');
                    const ampm = hours &gt;= 12 ? 'PM' : 'AM';

                    hours = hours % 12 || 12; // Convert 24-hour to 12-hour format, and handle midnight (0 =&gt; 12)
                    
                    const formattedTime = `${year}-${month}-${day} ${hours}:${minutes} ${ampm}`;
                    
                    return formattedTime;
                }
                var html="&lt;table style='width:360px;border:1px dashed #aaa;background:#f8f8f8;border-collapse:collapse;padding:20px 10px;'&gt;";
                itemrechtml += "&lt;p&gt;"+getCurrentDateTime()+"&lt;/p&gt;&lt;table style='width:360px;border:1px dashed #aaa;background:#f8f8f8;border-collapse:collapse;padding:20px 10px;margin:auto;'&gt;";
                $('#list li').each(function(i){
                        var nestedids = '';
                        var isnested = 0;
                        //$(this).delay(100*i).slideUp();
                        var iid=$(this).data('iid');
                        console.log('ajaxpo iid:' + iid);
                        var miid=iid.toString().replace(/\D.*/,'');
                        if ( typeof Iids[miid] != 'undefined' ) { 
                        if ( Iids[miid]['item_lunch'] == 1 ) d.sr.lunch=1;
                        }
                        var q=$(this).children('.q').text();
                        var mp=$(this).children('.p').text();
                        var p=mp/q;
                        $(this).find('.mainmod').each(function() {
                            var modid=$(this).attr('data-id');
                            if($(this).find('.nestedmod').length &gt; 0){
                                d.nestedcinfo+=modid +':';
                                isnested = 1;
                                nestedids += modid + ':';
                            }
                            var nestedstr = '';
                            $(this).find('.nestedmod').each(function() {
                                nestedids += $(this).attr('data-id') + '-';
                                nestedstr+=$(this).text().substring(5) + '-';
                            });
                            if($(this).find('.nestedmod').length &gt; 0){
     
                                var lastindex = nestedstr.lastIndexOf('-');
                                nestedstr = nestedstr.slice(0, lastindex) + nestedstr.slice(lastindex + 1);
                                d.nestedcinfo+=nestedstr + ';';


                                lastindex = nestedids.lastIndexOf('-');
                                nestedids = nestedids.slice(0, lastindex) + nestedids.slice(lastindex + 1);
                                nestedids = nestedids + ';';

                            }
                        });        
                        var n=$(this).children('.n').html();
                        var cnote=$(this).find('b.cnote').text();
                        d.sr['isnested'] = isnested;
                        //if ( cnote != '' ) d.sr[iid]=cnote;
                        if ( cnote != '' ) d.sr[i]=cnote;
                        if(isnested == 1) d.sr[i] = nestedids;
                        d.o+=iid+'x'+q+'*'+p+':';
                        //console.log('****iid:'+q+'*'+p);
                        html+="&lt;tr style='border-bottom:1px solid #aaa;padding:5px'&gt;&lt;td width=30 align=center valign=top&gt;&lt;br&gt;"+q+'&lt;/td&gt;&lt;td&gt;'+n+"&lt;/td&gt;&lt;td width=50 align=right valign=top style='padding-right:10px'&gt;&lt;br&gt;"+mp+'&lt;/td&gt;&lt;/tr&gt;';
                        itemrechtml += "&lt;tr style='border-bottom:1px solid #aaa;padding:5px'&gt;&lt;td width=30 align=center valign=top&gt;&lt;br&gt;"+q+'&lt;/td&gt;&lt;td&gt;'+n+"&lt;/td&gt;&lt;td width=50 align=right valign=top style='padding-right:10px'&gt;&lt;br&gt;"+mp+'&lt;/td&gt;&lt;/tr&gt;';
                        });
                $('#sum li').each(function(){
                        var n=$(this).text();
                        var v=$(this).attr('v');
                        if ( v == '0.00' || v == 0 ) return;
                        if ( /Delivery fee/i.test(n) &amp;&amp; dFee == 0 ) {
                            to=Number(to)+Number(v);
                            dFee=v;
                        }
                        html+="&lt;tr style='border-top:1px solid #aaa;padding:8px;font-weight:bold'&gt;&lt;td colspan=2 align=right&gt;"+n+"&lt;/td&gt;&lt;td align=right style='padding-right:10px'&gt;"+v+'&lt;/td&gt;&lt;/tr&gt;';
                        itemrechtml +="&lt;tr style='border-top:1px solid #aaa;padding:8px;font-weight:bold'&gt;&lt;td colspan=2 align=right&gt;"+n+"&lt;/td&gt;&lt;td align=right style='padding-right:10px'&gt;"+v+'&lt;/td&gt;&lt;/tr&gt;';
                        });
                html+='&lt;/table&gt;';
                itemrechtml += '&lt;/table&gt;';
                    tox=$('#total').attr('v');
                    logit('to: '+to);
                    logit('tox: '+tox);
                    logit('dFee: '+dFee);

                d.sr.optin=0;
                d.sr.curbside=0;
                if ( $('#optin').is(':checked') ) d.sr.optin=1;
                if ( $('#curbside').is(':visible') &amp;&amp; $('#curbside').hasClass('yes') ) d.sr.curbside=1;

                if ( dFee &gt; 0 ) {
                    console.log('checkout dFee:'+dFee);
                    d.o+=dfeeiid+'x'+dFee+'*1.00'+':';
                    d.sr.fee=dFee;
                }

                d.o=d.o.slice(0,-1);
                if(d.o=='') {
                    var h="&lt;div class='row center-align'&gt;";
                    h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
                    h+="&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;h5&gt;Items Error &lt;b&gt; Please refresh browser and try again&lt;/b&gt;&lt;br&gt;&lt;br&gt;Sorry for the inconvenience.&lt;/h5&gt;&lt;/p&gt;";
                    h+="&lt;/div&gt;";
				$('#msg .modal-content').html(h);
				$('#msg').modal({dismissible:false});
				$('#msg').modal('open');
				location.reload(true);
			};
			console.log(d);
			var kkm=Cookies.get('kkm');
			logit(JSON.stringify(d));

			url='ajaxPo.php';
                        if(trx &amp;&amp; card=='1111111111111111') url='ajaxPotrx.php';
                        console.log(url);

			$.ajax({type:'POST',url:url,data:{d:d,cp:cp,em:em,to:to,Kpid:Kpid,html:html,site:site,gotInv:gotInv,nopreorders:nopreorders,kkm:kkm},success:function(data){
					console.log('return:'+data);
					logit('return:'+data);
					xdata=data;
					
					if ( /Caught exception/.test(data) ) {
						//console.log('declined');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Card Declined!&lt;/div&gt;&lt;br&gt;Please check your card and try again!&lt;br&gt;&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
						xdata=xdata+' exception';
						$.ajax({url:'ajaxalert.php',data:{data:xdata},success:function(xxdata){
						}});
						return;
					}
					var info=JSON.parse(data);
					var cfpay='Card';
					if ( info.ccref=='cash' ) cfpay='Cash';
					if ( info.ds == 1 ) {
					//console.log(info);
					var ul=info.AcsURL;
					var req=info.PaReq;
					var tul=info.TermUrl;
					var md=info.MD;
					var xid=info.TransactionId;
					$('#f3ds').remove();
					var h='';
					h+='&lt;form method=post name=sendFingerprint action='+ul+'&gt;';
					h+='&lt;input name=PaReq value='+req+'&gt;';
					h+='&lt;input name=TermUrl value='+tul+'&gt;';
					h+='&lt;input name=MD value='+md+'&gt;&lt;/form&gt;';
					h+='&lt;script&gt;document.createElement("form").submit.call(document.sendFingerprint);&lt;\/script&gt;';
					$('&lt;iframe id=f3ds style="display:none"&gt;').appendTo('body').ready(function(){
							setTimeout(function(){
									$('#f3ds').contents().find('body').append(h);
									},50);
							});


					setTimeout(function(){
							$.ajax({type:'POST',url:'ajaxVo.php',data:{xid:xid},success:function(data){
                                    console.log('ajaxVo.php');
									var info=JSON.parse(data);
									console.log(info);
									if ( info.status==0 ) {
                                        //console.log('declined');
                                        var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Card Declined!&lt;/div&gt;&lt;br&gt;Please check your card and try again!&lt;br&gt;&lt;br&gt;";
                                        h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
                                        $('#msg .modal-content').html(h);
                                        $('#msg').modal({dismissible:true,onCloseEnd:myClose});
                                        $('#msg').modal('open');
									} else {
                                        $('#msg').modal('close');
                                        $('body').css({overflow:'visible'});
                                        $('#delivery, #pickup').attr({v:''}).removeClass('off');
                                        $('#checkout').attr({ad:'',a:'',v:'$0.00'}).html('Check out');
                                        $('#caddress').hide();
                                        $('#list').empty();
                                        $('#empty').show();
                                        $('#sum').slideUp('slow');
                                        $('#pay,#custom').remove();
                                        $('#done').show();
                                        $(window).scrollTop(0);
                                        setTimeout(function(){
                                                $(document).on('click','#done',function(){
                                                        tblhash != '' ? location.href=tblhash : location.href='index.php';
                                                        });
                                                },2000);
                                        $('#confirm').attr({v:info.oid});
                                        if ( tblhash == '' ) {
                                            $('#itemreceipt').html(itemrechtml);
                                            $('#cfpay').text('Payment: '+cfpay);
                                            $('#cftotal').text('Total: '+info.total);
                                        }

                                        //console.log(d);
                                        if ( info.type == 'pickup' ) {
                                            if ( d.sr.schedule != '' &amp;&amp; d.sr.schedule != 'A S A P' )
                                                $('#done b:not(.c)').text('Please pickup around '+d.sr.schedule);
                                            else
                                                $('#done b:not(.c)').text('Please pickup in about '+pickuptime+' mins.');
                                        } else {
                                            if ( d.sr.schedule != '' &amp;&amp; d.sr.schedule != 'A S A P' )
                                                $('#done b:not(.c)').text('Will be delivered around '+d.sr.schedule);
                                            else if($postmates&gt;0){
                                                $('#done b:not(.c)').text('Will be delivered in about '+delivery_asap);
                                            } else{
                                                if ( deliverytime &gt; 15 ) $('#done b:not(.c)').text('Will be delivered in about '+deliverytime+' mins.');
                                                else $('#done b:not(.c)').text('');
                                            }
                                        }
                                        if ( onlineAppend != '' ) $('#done b:not(.c)').append('&lt;br&gt;&lt;br&gt;&lt;p&gt;'+onlineAppend+'&lt;/p&gt;');

                                        $('#mobcart,#cart').attr({v:0});
                                        localStorage.setItem('cart','');
									}
							}});
					},5000);
					return;
					}
					console.log(info);
					if  ( info.status == 9 ) {
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:2em;margin-bottom:10%;'&gt;Sorry, delivery minimum not reached,&lt;/div&gt;&lt;br&gt;please check items subtotal.&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
					} else if  ( info.status == 6 ) {
						//console.log('No delivery');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:2em;margin-bottom:10%;'&gt;Sorry, No delivery right now!&lt;/div&gt;&lt;br&gt;Please call restaurant for pickup orders.&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
					} else if  ( info.status == 8 ) {
                                                //console.log('cookie no, try refresh');
                                                var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:2em;margin-bottom:10%;'&gt;Some error happened, this page will refresh in 5 seconds. Please try again!&lt;/div&gt;&lt;br&gt; or call restaurant to order&lt;br&gt;";
                                                h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
                                                $('#msg .modal-content').html(h);
                                                $('#msg').modal({dismissible:true,onCloseEnd:myClose});
                                                $('#msg').modal('open');
						//$('#list li').remove();
						mySum();
						setTimeout(function(){location.reload(true);}, 5000);
					} else if  ( info.status == 7 ) {
                                                //console.log('need to logout then login again');
                                                var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:2em;margin-bottom:10%;'&gt;Sorry, please Logout then Login again to place your order!&lt;/div&gt;&lt;br&gt; or call restaurant to order&lt;br&gt;";
                                                h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
                                                $('#msg .modal-content').html(h);
                                                $('#msg').modal({dismissible:true,onCloseEnd:myClose});
                                                $('#msg').modal('open');
					} else if  ( info.status == 10 ) {
						//console.log('item not available. ontime');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:2em;margin-bottom:10%;'&gt;Sorry, some items are not available now!&lt;/div&gt;&lt;br&gt;We will empty Cart and reload the menu in 10 seconds. Please add items again!&lt;br&gt; or call restaurant to order&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
						$('#list li').remove();
						mySum();
						setTimeout(function(){location.reload(true);}, 10000);
					} else if  ( info.status == 5 ) {
						//console.log('no lunch');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:2em;margin-bottom:10%;'&gt;Sorry, Menu Items Changed!&lt;/div&gt;&lt;br&gt;We will empty Cart and reload the page in 5 seconds. Please try again!&lt;br&gt; or call restaurant to order&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
						$('#list li').remove();
						mySum();
						setTimeout(function(){location.reload(true);}, 5000);
					} else if  ( info.status == 4 ) {
						//console.log('no lunch');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Sorry, Lunch items not available for pickup after lunch hours!&lt;/div&gt;&lt;br&gt;Please remove lunch items!&lt;br&gt;&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
					} else if  ( info.status == 3 ) {
						//console.log('closed');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Sorry, Store is Closed!&lt;/div&gt;&lt;br&gt;Please Place Your Order Later!&lt;br&gt;&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
					} else if  ( info.status == 2 ) {
						//console.log('declined');
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Card Declined!&lt;/div&gt;&lt;br&gt;Please check your card and try again!&lt;br&gt;&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
		                if(teconnect) $('#pay a.p.on').removeClass('on');
					    if(teconnect) $('#po2,#checkout').addClass('disabled');
					} else if  ( info.status == 11 ) {
						var h="&lt;div style='width:100%;height:100%;display:flex;flex-flow:row wrap;justify-content:center;align-items:center;padding:10% 0'&gt;&lt;div style='width:100%;text-align:center;color:red;font-size:3em;margin-bottom:10%;'&gt;Sorry, Schedule time is in the past, please update before place your order!&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;";
						h+="&lt;div style='width:100%;text-align:center;margin:5%'&gt;&lt;a class='modal-close btn-large'&gt;&lt;i class='material-icons left'&gt;close&lt;/i&gt; Close&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;";
						$('#msg .modal-content').html(h);
						$('#msg').modal({dismissible:true,onCloseEnd:myClose});
						$('#msg').modal('open');
					} else if(trx &amp;&amp; card=='1111111111111111') {
                                                var ooqid=info.ooqid;
                                                updatetrxform(to,ooqid,site,d.ph,fn);
                                                document.getElementById("trxform").requestSubmit();
                                                return; 
					} else {
						$('#msg').modal('close');
						$('body').css({overflow:'visible'});
						$('#delivery, #pickup').attr({v:''}).removeClass('off');
						$('#checkout').attr({ad:'',a:'',v:'$0.00'}).html('Check out');
						$('#caddress').hide();
						if ( tbl != '' ) {
							var p=1;
							if ( /cash/i.test(info.ccref) ) p=0;
							var sub=Number($('#sub').attr('v'));
							var myd=new Date();
							var myorder=localStorage.getItem('myorder');
							if ( !myorder || myorder == '' || myorder =='undefined' ) var myorders=[{mtime:myd.getTime(),htm:$('#list').html(),p:p,sub:sub}];
							else {
								var myorders=JSON.parse(myorder);
								myorders.push({mtime:myd.getTime(),htm:$('#list').html(),p:p,sub:sub});
								for(var i=0;i&lt;myorders.length-1;i++){
									var diff=myd.getTime() - myorders[i].mtime;
									if ( diff &lt; 3600*3000 &amp;&amp; myorders[i].p == 0 ) sub+=Number(myorders[i].sub);
								}
							}
							if ( discount &gt;= 0 ) var dist=sub*discount/100;
							else var dist=discount*-1;
							var tax=(sub-dist)*taxrate/100;
							if ( surcharge &gt; 0 ) tax+=(sub-dist+tax+kFee)*surcharge/100;
							var total=sub-dist+tax+kFee;
							$('#tblnew').attr({v:'$'+total.toFixed(2)});
							if ( total&gt;0 &amp;&amp; qrtocfg['device'] &gt; 0 ) $('#tbldevice').addClass('hide');
							//localStorage.setItem('myorder',JSON.stringify(myorders));

							if ( qrtocfg['share'] == 1 ){ 
								clearTimeout(sint);
								myShare(2);
								console.log('myShare called in ajaxPo 2');
							}
						}
						$('#list').empty();
						$('#empty').show();
						$('#sum').slideUp('slow');
						$('#pay,#custom').remove();
                        $('#category, #item, #itemlist,#slideLeft,#slideRight').remove();
						$('#done').show();
                        $('#itemreceipt').html(itemrechtml);
						$(window).scrollTop(0);
						setTimeout(function(){
								$(document).on('click','#done',function(){
										if ( location.hash.split(/\?/)[0] == '#pay'){
											$('#list li').remove();
											mySum();
											location.href='index.php#success';
										}else{
											tblhash != '' ? location.href=tblhash : location.href='index.php';
										}
								});
						},2000);
						$('#confirm').attr({v:info.oid});
						if ( tblhash == '' ) {
							$('#cfpay').text('Payment: '+cfpay);
							$('#cftotal').text('Total: '+info.total);
						}
						//console.log(d);
						if ( info.type == 'dinein' ) {
							$('#done b:not(.c)').text('');
						} else if ( info.type == 'pickup' ) {
							var maddress='';
							if ( $('#maddress li.maddress.checked').length == 1 ){
								maddress='&lt;br&gt;FROM: &lt;b style="font-size:18px"&gt;';
								maddress+=$('#maddress li.maddress.checked').text().replace(/check_box.*/,'');
								maddress+='&lt;/b&gt;'; 
							}
							if ( spot != '' &amp;&amp; typeof spot != 'undefined' ) {
								$('#done b:not(.c)').html('We will deliver in about '+info.pickuptime+' mins. to '+spot);
							} else {
								if ( d.sr.schedule != '' &amp;&amp; d.sr.schedule != 'A S A P' )
									$('#done b:not(.c)').html('Please pickup around '+d.sr.schedule+maddress);
								else
									$('#done b:not(.c)').html('Please pickup in about '+info.pickuptime+' mins. '+maddress);
							}
						} else {
							if ( d.sr.schedule != '' &amp;&amp; d.sr.schedule != 'A S A P' )
								$('#done b:not(.c)').text('Will be delivered around '+d.sr.schedule);
							else if(postmates&gt;0)
								$('#done b:not(.c)').text('Will be delivered in about '+delivery_asap);
							else {
								if ( info.deliverytime &gt; 15 ) $('#done b:not(.c)').text('Will be delivered in about '+info.deliverytime+' mins.');
								else $('#done b:not(.c)').text('');
							}
						}
						if ( onlineAppend != '' ) $('#done b:not(.c)').append('&lt;br&gt;&lt;br&gt;&lt;p&gt;'+onlineAppend+'&lt;/p&gt;');

						$('#mobcart,#cart').attr({v:0});
						localStorage.setItem('cart','');
						if ( info.status == 1 ) {
							console.log('success');
						} else {
							console.log('send sms');
							xdata=xdata+' status not 1';
							$.ajax({url:'ajaxalert.php',data:{xdata:xdata},success:function(data){
							}});
						}
					}
			}});
		} else {
			logit(' --12b skip');
			if ( tbl != '' ) {
				if ( $('#QRoff').hasClass('hide') &amp;&amp; $('#QRdev').hasClass('hide')  ) {
					console.log('ready');
				} else {
					if ( qrtocfg['geo']==1 &amp;&amp; geoF==1 ) {
						console.log('geo not ready');
						$('#QRoff').removeClass('hide');
						$('#QRoff b').removeClass('hide');
						$('#tbl a').addClass('hide');
						$('#tbl label.col').addClass('hide');
						$('#tbl').modal({dismissible:false});
						$('#tbl').modal('open');
						return;
					} else {
						console.log('not ready');
						$.ajax({url:'ajaxQrt.php',data:{tid:tblid,tbl:tbl},success:function(data){
								var info=JSON.parse(data);
								console.log(info);
								guests=info.guests;
								if ( info['device'] &gt; 0 ) {
								console.log('device &gt;0');
								$('#QRdev').removeClass('hide');
								$('#QRdev b').removeClass('hide');
								$('#tbl a').addClass('hide');
								$('#tbl label.col').addClass('hide');
								$('#tbl').modal({dismissible:false});
								$('#tbl').modal('open');
								return;
								}
								if ( info['table'] == 1 || /failed/i.test(info['status']) ) {
								console.log('table 1');
								$('#QRoff').removeClass('hide');
								$('#QRoff b').removeClass('hide');
								$('#tbl a').addClass('hide');
								$('#tbl label.col').addClass('hide');
								$('#tbl').modal({dismissible:false});
								$('#tbl').modal('open');
								} else {
									console.log('table not 1');
									$('#QRoff').addClass('hide');
									$('#QRoff b').addClass('hide');
									$('#tbl a').removeClass('hide');
									$('#tbl').modal({dismissible:false});
									$('#tbl').modal('open');
								}
						}});
						return;
					}
				}
			}
			spot=Cookies.get('spot');
			if ( spot ) spot=spot.replace(/\+/g,' ');
			if ( tbl == '' &amp;&amp; $('#maddress li.maddress').length &gt; 1 &amp;&amp; $('#maddress li.maddress.checked').length == 0 &amp;&amp; (spot == '' || typeof spot == 'undefined') ) {
				$('#checkout').addClass('pickupaddresson');
				$('#maddress').modal({dismissible:false});
				$('#maddress').modal('open');
				return false;
			}
			mySave();
			$(this).addClass('disabled po').text('PLACE ORDER');
			$('#topsearch').remove();
			$('#topmenu').remove();
			$('#category, #slideLeft,#slideRight').remove();
			$('#item').remove();
			//if ( /^kpqa5/i.test(site ) ) 
			//if( apay &amp;&amp; tbl=='' &amp;&amp; ( $('#pickup').hasClass('on') || $('#delivery').length==0 ))
			//if ( mpay &amp;&amp; tbl=='') 
			if ( apay ) {
				console.log('apay xxxx');
				var cart=localStorage.getItem('cart');
				cart1=cart.length;
				cart=cart.replace(/&lt;div&gt;&lt;b class=.*?REMOVE.*?ADD&lt;\/b&gt;&lt;\/div&gt;/g,'');
				cart=cart.replace(/\\n/g,'');
				cart=cart.replace(/\\t/g,'');
				cart=cart.replace(/&lt;div&gt;&lt;p.*\/p&gt;&lt;\/div&gt;/,'');
				cart=cart.replace(/&lt;\/b&gt;&lt;a class=\\"mainname\\"&gt;/g,'^4');
				cart=cart.replace(/&lt;\/a&gt;&lt;div class=\\"modname\\"&gt;/g,'^5');
				cart=cart.replace(/&lt;\/b&gt;&lt;\/li&gt;&lt;li class=\\"cust flex\\" data-iid=/g,'^2');
				cart=cart.replace(/&lt;\/b&gt;&lt;div class=\\"col s8 m8 l8 n\\"&gt;&lt;b class=\\"c\\"&gt;/g,'^8');
				cart=cart.replace(/&lt;b class=\\"col s1 m1 l1 q\\"&gt;/g,'^1');
				cart=cart.replace(/&lt;b class=\\"col s3 m3 l3 p\\"&gt;/g,'^3');
				//ccart = btoa(LZ.tb(LZ.en(cart)));
				ccart = btoa(LZ.tb(LZ.en(utoa(cart))));
				if ( /^kpqa/i.test(site ) ) {
					logit(cart1+' '+cart.length+' '+ccart.length);
					//alert(atou(LZ.de(LZ.en(utoa(cart)))));
					if(debug) M.toast({html:'Redirect to ApplePay',classes:'blue darken-4 tcenter'});
				}
				//Cookies.set(site+'cart',cart,{domain:'kwickmenu.com'});
				Cookies.set('Ann',1,{expires:0.1,domain:'kwickmenu.com'});
				console.log('https://kwickmenu.com/'+site+'/kpap.php#pay?ccart='+ccart);

				location.href='https://kwickmenu.com/'+site+'/kpap.php#pay?ccart='+ccart;
				return false;
			}else{
				console.log('NOT apay xxxx');
			}


			$('#pay').show();
			$(window).scrollTop(0);
			if ( $('#pickup').hasClass('off') ) {
				$('#pickup').remove();
				$('#curbside').hide();
				console.log('pickup button revmoved');
			}
			if ( $('#delivery').hasClass('off') ) {
				$('#delivery').remove();
				console.log('delivery button revmoved');
			}
			if ( $('#pickup').length == 1 &amp;&amp; onlinecurbside == 1) {
				if ( $('#curbside').length == 1 ) $('#curbside').show();
				else $('&lt;div id=curbside&gt;Curbside Pickup&lt;/div&gt;').insertAfter('#pickup');	
			}
			$('#list b.r,#list b.a').remove();
			if ( $('#mobnav').is(':visible') ) $('#custom').addClass('hide-on-med-and-down show-on-large');
			myPv();
			$('#emptycart').hide();
			if ( onlineTip &gt; 5 ) $('#tiprow a.tip[v='+onlineTip+']').trigger('click');
		}
			pickuplen= $('#pickup').length;
			delivlen= $('#delivery').length;
			console.log('end pickuplen:'+pickuplen);
			console.log('end delivlen:'+delivlen);
});
$('#ctip').on('keyup',function(e){
		console.log('ctip keyup');
		var v=$('#ctip').val();
		if ( ( e.keyCode &gt;= 48 &amp;&amp; e.keyCode &lt;= 57) || (e.keyCode &gt;= 96 &amp;&amp; e.keyCode &lt;= 105) || e.keyCode == 110 || e.keyCode == 190 ) {
		var tip=Number(v.replace(/[^0-9\.]/,''));
		if (!isNaN(tip) ) 
			myTip(tip);
		else
			myTip(0);
		} else {
			if ( e.keyCode != 8 &amp;&amp; e.keyCode != 52 &amp;&amp; e.keyCode != 16 ) $('#ctip').val(v.slice(0,-1));
				var tip=Number(v.replace(/[^0-9\.]/,''));
			if (!isNaN(tip) ) 
				myTip(tip);
			else
				myTip(0);
		} 
});

$('#ctip').on('focus',function(){
	//console.log('ctip focus');
	$('#pay a.tip.on').removeClass('on');
	var xtip= $('#ctip').val();
	tip=Number(xtip.replace('$', ''));
	//console.log('ctip val:'+tip);
	myTip(tip);
});

$('.tip').on('click',function(){
	myTax0();
        if ( $('#dfee').is(':visible') ) {
                tdfee=Number($('#dfee').attr('v'));
        }else tdfee=0;

	$('#ctip').val('$');
	$('#pay a.tip.on').removeClass('on');
	$(this).addClass('on');
	var sub=Number($('#sub').attr('v'));

	if(storetip==1){
		if ( typeof tax0 === 'undefined'){
			var tax=Number($('#tax').attr('v'));
			tax0=tax;
			console.log('tax0 undefined!!!!! tax:'+tax);
		}
                var tip=(sub+tdfee+tax0)*$(this).attr('v')/100;
                console.log('storetip calc. tax0:'+tax0);
        }else{
                var tip=(sub+tdfee)*$(this).attr('v')/100;
        }

	//console.log('sub tip click:'+sub);
	//console.log('sub tip click tip:'+tip);
	myTip(tip);
});

function myTip(tip){
	var dist=Number($('#discount').attr('v'));
	var sub=Number($('#sub').attr('v'));
	var tax=Number($('#tax').attr('v'));
	if ( isNaN(dist)) dist=0;
	var dt=0;
	//if ( dtax == 1 ) dt=dFee*taxrate/100;
	var sur=0;
	if ( surcharge &gt; 0 &amp;&amp; $('#pay a.p.on').attr('id') == 'pcard' ) { 
		sur=tip*surcharge/100;
		var tipsur=Number($('#tip').attr('v'));
		if ( isNaN(tipsur)) tipsur=0;
		else tipsur=tipsur*surcharge/100;
		console.log('tipsur='+tipsur);
		tax-=tipsur;
		tax+=sur;
		$('#tax').attr({v:tax.toFixed(2)});
	}
    if(tip &gt;= ((sub+tax-dist) * 0.30)) {
        console.log("Tip amount is large!!!");
        $('#tipwarning').html('&lt;p style="color:#c22c27;font-weight:bolder;text-align:center;font-size:1.5em;"&gt;Your tip amount is unusually high. Please double-check before continuing.&lt;/p&gt;');
    }else{
        $('#tipwarning').html('');

    }
	total=sub+tax-dist+tip+dFee+kFee+dt;
	//total=sub+tax-dist+tip+dFee+kFee+dt+sur;
	console.log('mytip sub:'+sub+' tax:'+tax+' tip:'+tip+' dist:'+dist+' dFee:'+dFee+' kFee:'+kFee+' dt:'+dt+' sur:'+sur+' total:'+total);
	total=total.toFixed(2);

	$('#po2,#checkout,#total,#displaytotal').attr({v:total});
	if ( tip &gt; 0 ) $('#tip').attr({v:tip.toFixed(2)}).show();
	else $('#tip').attr({v:0}).hide();
	//myShare(1);
	if ( tblid &gt; 0 &amp;&amp; qrtocfg['share'] == 1 ) {
		clearTimeout(sint);
		myShare(1);
	}
	oTip=tip;
	console.log('myTip:'+tip);
	//mySave();
}

$(document).on('click','#pay a.p',function(){
		console.log('pay clicked');
        pickuplen= $('#pickup').length;
        delivlen= $('#delivery').length;
        console.log('pickuplen:'+pickuplen);
        console.log('delivlen:'+delivlen);
		if ( !teconnect &amp;&amp; $(this).hasClass('on') ) return;
		$('#pay a.p.on').removeClass('on');
		$(this).addClass('on');
		if ( $(this).attr('id') == 'pcash' ){
			if ( surcharge &gt; 0 ) {
				var dist=Number($('#discount').attr('v'));
				if(Number.isNaN(dist)) dist=0;
				var sub=Number($('#sub').attr('v'));
				var tax=Number($('#tax').attr('v'));
				var total=Number($('#total').attr('v'));
				var ctax=(sub-dist)*taxrate/100;
				var sur=tax-ctax;
				tax-=sur;
				total-=sur;
				$('#tax b').text('Tax('+taxrate+'%)');
				$('#tax').attr({v:tax.toFixed(2)});
				$('#total,#displaytotal').attr({v:total.toFixed(2)});
				$('#po2,#checkout').attr({v:'$'+total.toFixed(2)});
			}
			$('#card, #cexp, #cvv, #czip').addClass('disabled').attr({disabled:true});
			$('#cardrow,#gcardrow').slideUp();
			if ( tbl != '' ) {
				$('#pay h5').eq(2).hide();
				$('#pay h5').eq(3).hide();
				$('#tiprow,#promorow').slideUp();
			}
		} else if ( $(this).attr('id') == 'pgift' ){
			if ( surcharge &gt; 0 ) {
				var dist=Number($('#discount').attr('v'));
				if(Number.isNaN(dist)) dist=0;
				var sub=Number($('#sub').attr('v'));
				var tax=Number($('#tax').attr('v'));
				var total=Number($('#total').attr('v'));
				var ctax=(sub-dist)*taxrate/100;
				var sur=tax-ctax;
				tax-=sur;
				total-=sur;
				$('#tax b').text('Tax('+taxrate+'%)');
				$('#tax').attr({v:tax.toFixed(2)});
				$('#total,#displaytotal').attr({v:total.toFixed(2)});
				$('#po2,#checkout').attr({v:'$'+total.toFixed(2)});
			}
			$('#card, #cexp, #cvv, #czip').addClass('disabled').attr({disabled:true});
			$('#cardrow').slideUp();
			$('#gcardrow').removeClass('hide').slideDown();
			if ( tbl != '' ) {
				$('#pay h5').eq(2).hide();
				$('#pay h5').eq(3).hide();
				$('#tiprow,#promorow').slideUp();
			}
		} else {
			if ( surcharge &gt; 0 ) {
				var dist=Number($('#discount').attr('v'));
				if(Number.isNaN(dist)) dist=0;
				var sub=Number($('#sub').attr('v'));
				var tax=Number($('#tax').attr('v'));
				var total=Number($('#total').attr('v'));
				var sur=(sub-dist+tax+kFee)*surcharge/100;
				tax+=sur;
				total+=sur;
				var tipsur=Number($('#tip').attr('v'));
				if ( isNaN(tipsur)) tipsur=0;
				else tipsur=tipsur*surcharge/100;
				tax+=tipsur;
				total+=tipsur;
				console.log('tipsur='+tipsur);
				$('#tax b').text('Tax &amp; fee');
				$('#tax').attr({v:tax.toFixed(2)});
				$('#total,#displaytotal').attr({v:total.toFixed(2)});
				$('#po2,#checkout').attr({v:'$'+total.toFixed(2)});
			}
			$('#gcardrow').slideUp();
			$('#cardrow').slideDown();
			$('#card, #cexp, #cvv, #czip').removeClass('disabled').attr({disabled:false});
			if ( tbl != '' ) {
				$('#pay h5').eq(2).show();
				$('#pay h5').eq(3).show();
				$('#tiprow,#promorow').slideDown();
			}
            if(teconnect) {
                $('#tecdivo').modal({dismissible:true,onCloseEnd:function (){
                    $('#po2,#checkout').addClass('disabled');
                    $('#pcard').removeClass('on');
                } });
                $('#tecdivo').modal('open');
            }
		}
		myPv();
});

$('#pay input').on('keyup',function(){
    console.log('pay input keyup call myPv');
	myPv();
});

function logMessage(logMessage) {
    const data = { message: logMessage };

    fetch('https://kpqa.kwickmenu.com/logs/kmenu.log', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    }).then(response =&gt; response.text())
      .then(data =&gt; console.log('Log sent:', data))
      .catch(error =&gt; console.error('Error sending log:', error));
}

function myPv(){
	//phone number check etc.

	logit('myPv called');

	if (typeof tblid === 'undefined'){
		logit('tblid not defined');
	}else{
		logit('tblid:'+tblid);
	}

	if (typeof tbl === 'undefined'){
		logit('tbl not defined');
	}else{
		logit('tbl:'+tbl);
	}

	if (typeof Cookies.get('tblid') === 'undefined'){
		logit('xtblid: no cookie');
	} else {
		xtblid=Cookies.get('tblid');
		tblid=xtblid;
		xtbl=Cookies.get('tbl');
		tbl=xtbl;
		logit('xtblid:'+xtblid);
		logit('xtbl:'+xtbl);
		xPh='0000000000'+xtblid;
		xPh=xPh.slice(-10);
		logit('xPh:'+xPh);
	    var ph=$('#ph').val().replace(/\D/g,'');	
		if (!( typeof phonerequire != 'undefined' &amp;&amp; phonerequire =='Required') &amp;&amp; ph==''){
			$('#ph').val(xPh);
			logit(' SET tblid to phone 2');
        }
		Fn=$('#fn').val();
        if(Fn==''){
		    $('#fn').val(xtbl);
        }
        logit(' SET tbl to fn 3:'+xtbl);
		//$('#papple').show(); 
	}
	
	$('#papple').hide();
	var ph=$('#ph').val().replace(/\D/g,'');	
	while(ph.substring(0,1)==1){
		console.log(ph);
		ph=ph.substring(1);
		$('#ph').val(ph);
	}
	var fn=$('#fn').val().replace(/\W/g,'');	
	var ln=$('#ln').val().replace(/\s/g,'');	
	var em=$('#em').val().replace(/\s/g,'');	

	if ( tblid &gt; 0 ) {
		if ( ph == '' ) {
			ph='0000000000'+tblid;
			ph=ph.slice(-10);
		}
		$('#lfn').removeClass('error');
		$('#lph').removeClass('error');
		phonevalid=true;
		if(authnet){
			$('#authnetpay').removeClass('disabled');
			console.log(' authnetpay show ');
		}
	} else {
		fn == '' ? $('#lfn').addClass('error') : $('#lfn').removeClass('error');
		if(fn == ''){
			$('#lfn').addClass('error');
			if(authnet) $('#authnetpay').addClass('disabled');
                        if(trx) $('#trxpay').addClass('hide');
		}else{
			$('#lfn').removeClass('error');
			if(authnet) $('#authnetpay').removeClass('disabled');
                        if(trx) $('#trxpay').removeClass('hide');
		}
		if ( ph.length == 10 || ph.length == 11 ){
			$.ajax({url:'ajaxphonecheck.php',data:{ph:ph},success:function(d){
					if ( d =='valid' ) {
						//console.log('valid phone number');
						$('#lph').removeClass('error');
						phonevalid=true;
						if(authnet &amp;&amp; fn!=''){
                                                        $('#authnetpay').removeClass('disabled');
                                                        logit(' authnetpay show ');
                                                }
                                                if(trx &amp;&amp; fn!='') $('#trxpay').removeClass('hide');

						//fix for cash only payment
						if ( $('#pcash').hasClass('on') &amp;&amp; !$('#cp').is(':visible') &amp;&amp; /[a-z0-9]/i.test(fn) ) {
							$('#po2,#checkout').removeClass('disabled');
							if(teconnect) $('#pcard').removeClass('disabled');
						}
					} else {
						$('#lph').addClass('error');
                                                $('#authnetpay').addClass('disabled');
                                                if(trx) $('#trxpay').addClass('hide');
						console.log('INVALD phone number');
						M.toast({html:'INVALID PHONE NUMBER.'});
						phonevalid=false;
					}
			} });
		}else {
			$('#lph').addClass('error');
                        $('#authnetpay').addClass('disabled');
                        if(trx) $('#trxpay').addClass('hide');
			phonevalid=false;
		}
	}

	if(apay &amp;&amp; phonevalid &amp;&amp; tbl=='' &amp;&amp; !($('#papple').is(':visible')) ){
		//$('#papple').slideDown(); 
		$('#papple').show(); 
		$('#apaywarning').hide(); 
		logit(' *added 11');
	}else if(!(apay &amp;&amp; phonevalid &amp;&amp; tbl=='') &amp;&amp; $('#papple').is(':visible')){
		$('#papple').slideUp();
		logit(' *hide');
	}

	if(apay &amp;&amp; phonevalid &amp;&amp; !($('#papple').is(':visible')) ){
		$('#papple').show(); 
		$('#apaywarning').hide(); 
		logit(' table order show papple');
	}

	if(apay &amp;&amp; phonevalid ){
		$('#papple').show(); 
		$('#apaywarning').hide(); 
		logit(' apay show papple 2');
	}else{
		logit(' apay no show, apay::'+apay);
	}

	if(apay &amp;&amp; tblid&gt;0){
		$('#papple').show(); 
		$('#apaywarning').hide(); 
		logit(' table order show papple 2');
	}

	logit(' myPv apay2:'+apay);

	if ( $('#pcash').hasClass('on') ) {
		if ( (ph.length == 10 || ph.length == 11 ) &amp;&amp; /[a-z0-9]/i.test(fn) ) {
			if ( $('#cp').is(':visible') ) {
				var cp=$('#cp').val().length;
				if ( cp &gt; 3 &amp;&amp; phonevalid ) {
					$('#po2,#checkout').removeClass('disabled');
                    if(teconnect) $('#pcard').removeClass('disabled');
				}else{
					$('#po2,#checkout').addClass('disabled');
                    if(teconnect) $('#pcard').addClass('disabled');
                }
			} else{
				if(phonevalid){
                    $('#po2,#checkout').removeClass('disabled');
                    if(teconnect) $('#pcard').removeClass('disabled');
                }
			}
		} else{
			$('#po2,#checkout').addClass('disabled');
            if(teconnect) $('#pcard').addClass('disabled');
        }
	} else if ( $('#pgift').hasClass('on') ) {
		var gcard=$('#gcard').val().replace(/\D/g,'');
		gcard.length &lt; 8 ? $('#lgcard').addClass('error') : $('#lgcard').removeClass('error');

		if ( (ph.length == 10 || ph.length == 11 ) &amp;&amp; /[a-z0-9]/i.test(fn) &amp;&amp; gcard.length &gt; 7 ) {
			if ( $('#cp').is(':visible') ) {
				var cp=$('#cp').val().length;
				if ( cp &gt; 3 &amp;&amp; phonevalid ) {
					$('#po2,#checkout').removeClass('disabled');
                    if(teconnect) $('#pcard').removeClass('disabled');
				}else{
					$('#po2,#checkout').addClass('disabled');
                    if(teconnect) $('#pcard').addClass('disabled');
                }
			} else{
				if(phonevalid){
                    $('#po2,#checkout').removeClass('disabled');
                    if(teconnect) $('#pcard').removeClass('disabled');
                }
			}
		} else{
			$('#po2,#checkout').addClass('disabled');
            if(teconnect) $('#pcard').addClass('disabled');
        }
	} else {
		if ( ( ph.length == 10 || ph.length == 11 ) &amp;&amp; /[a-z0-9]/i.test(fn) ) {
			//if(apay &amp;&amp; tbl=='' &amp;&amp; !( $('#pickup').hasClass('off') || $('#pickup').length==0 )) 
			//if(apay &amp;&amp; tbl=='' )
			if(apay &amp;&amp; tbl=='' &amp;&amp; $('#papple').is(':hidden')){
				$('#papple').slideDown();
				logit(' *added 2');
				tox=$('#total').attr('v');
				logit('to: '+tox);
				logit('dFee: '+dFee);
			}

			var card=$('#card').val().replace(/\D/g,'');
			var cexp=$('#cexp').val().replace(/\D/g,'');
			var cvv=$('#cvv').val().replace(/\D/g,'');
			var czip=$('#czip').val().replace(/\D/g,'');

			card.length &lt; 13 ? $('#lcard').addClass('error') : $('#lcard').removeClass('error');
			cvv.length &lt; 3 ? $('#lcvv').addClass('error') : $('#lcvv').removeClass('error');
			cexp.length != 4 ? $('#lexp').addClass('error') : $('#lexp').removeClass('error');
			czip.length != 5 ? $('#lzip').addClass('error') : $('#lzip').removeClass('error');

			if ( cvv.length &gt; 2 &amp;&amp; cexp.length == 4 &amp;&amp; czip.length == 5 &amp;&amp; card.length &gt; 12  ) {
				if ( $('#cp').is(':visible') ) {
					var cp=$('#cp').val().length;
					if ( cp &gt; 3 &amp;&amp; phonevalid ) {
						$('#po2,#checkout').removeClass('disabled');
                        if(teconnect) $('#pcard').removeClass('disabled');
					}else {
						$('#po2,#checkout').addClass('disabled');
                        if(teconnect) $('#pcard').addClass('disabled');
                    console.log('DISABLE 4 checkout ****');
                    }
				} else {
					if(phonevalid){
                        $('#po2,#checkout').removeClass('disabled');
                        if(teconnect) $('#pcard').removeClass('disabled');
                    }
				}
			} else {
				$('#po2,#checkout').addClass('disabled');
                console.log('DISABLE 5 checkout ****');
            }
            if(teconnect) $('#pcard').removeClass('disabled');
		} else {
			$('#po2,#checkout').addClass('disabled');
            if(teconnect) $('#pcard').addClass('disabled');
            console.log('DISABLE 6 checkout ****');
        }
	}
	var kkm=Cookies.get('kkm');
	logit('cookie kkm 1:');
	console.log(kkm);
	if ( typeof kkm != 'undefined' ) {
		kkm=kkm.split(/\|/);
		if ( kkm[0] == '-1' ) {
			kkm[1]=fn;
			kkm[3]=ph;
			kkm[4]=ln;
			kkm[5]=em;
			kkm=kkm.join('|');
			//Cookies.set('kkm',kkm,{domain:'.kwickmenu.com'});
			console.log('set kkm a');
			Cookies.set('kkm',kkm,{domain:'.kwickmenu.com',path:'/'});
		}
	}
	logit('cookie kkm 2:');
	console.log(kkm);
}

$('#oos li').on('click',function(){
		$('#oos li.on').removeClass('on');
		$(this).addClass('on');
		var o=$(this).data('o');
		var sr=$(this).data('sr');
		var h='&lt;h5&gt;Old Order&lt;/h5&gt;';
		h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
		h+='&lt;div id=olist&gt;';
		for(var i=0;i&lt;o.length;i++){
		var e=o[i].replace(/\*.*/,'').split(/x/);
		var q=e[1];
		var os=myDiid(e[0]);
		var cnote=sr[e[0]];
		var n='&lt;b class=c&gt;'+os.c+'&lt;/b&gt;';
		n+=os.n;
		if ( cnote ) n+='&lt;b class=cnote&gt;'+cnote+'&lt;/b&gt;';
		var p=os.p * q;
		h+='&lt;span class="row flex" data-iid="'+e[0]+'"&gt;&lt;b class="col s1 m1 l1 q"&gt;'+q+'&lt;/b&gt;&lt;div class="col s8 m8 l8 n"&gt;'+n+'&lt;/div&gt;&lt;b class="col s3 m3 l3 p"&gt;'+p.toFixed(2)+'&lt;/b&gt;&lt;/span&gt;';
		}
		h+='&lt;/div&gt;';
		h+="&lt;div class=center-align&gt;&lt;a id=oadd class='modal-close waves-effect waves-light'&gt;Add this order to cart&lt;/a&gt;&lt;/div&gt;";
		$('#msg .modal-content').html(h);
		$('#msg').modal({dismissible:true});
		$('#msg').modal('open');
});

$(document).on('click','#oadd',function(){
		var o=$('#oos li.on').data('o');
		var sr=$('#oos li.on').data('sr');
		var h='';
		for(var i=0;i&lt;o.length;i++){
		var e=o[i].replace(/\*.*/,'').split(/x/);
		var q=e[1];
		var os=myDiid(e[0]);
		var cnote=sr[e[0]];
		var n='&lt;b class=c&gt;'+os.c+'&lt;/b&gt;';
		n+=os.n;
		if ( cnote ) n+='&lt;b class=cnote&gt;'+cnote+'&lt;/b&gt;';
		n+="&lt;div&gt;&lt;b class=r&gt;&lt;i class='material-icons left'&gt;remove_circle_outline&lt;/i&gt;REMOVE&lt;/b&gt; &lt;b class=a&gt;&lt;i class='material-icons left'&gt;add_circle_outline&lt;/i&gt;ADD&lt;/b&gt;&lt;/div&gt;";
		var p=os.p * q;
		h+='&lt;li class="cust flex" data-iid="'+e[0]+'"&gt;&lt;b class="col s1 m1 l1 q"&gt;'+q+'&lt;/b&gt;&lt;div class="col s8 m8 l8 n"&gt;'+n+'&lt;/div&gt;&lt;b class="col s3 m3 l3 p"&gt;'+p.toFixed(2)+'&lt;/b&gt;&lt;/li&gt;';
		}
		$(h).appendTo('#list');
		mySum();
		});

if ( /kkmCheckout=1/.test(document.cookie) ){ 
	document.cookie='kkmCheckout=; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/';
	$('#checkout').trigger('click'); 
}
$('#address').on('click',function(){
		var address=$(this).text().replace(/location_on\s*/,'');
		oaddress=$(this).text();
		console.log(oaddress);
		console.log(address);
		window.open('https://www.google.com/maps/search/'+address);
		});
$('#addmore').on('click',function(){
		tblhash != '' ? location.href=tblhash : location.href='index.php';
		});
$('#cg').on('click',function(){
		$('#cp').val('').hide();
		myPv();
		})
$('#ca').on('click',function(){
		$('#cp').show().focus();
		$('#po2,#checkout').addClass('disabled');
                    console.log('DISABLE 7 checkout ****');
		});
$('#mobcart').on('click',function(){
		//console.log('mobcart');
		if ( /orders.php/.test(window.location.href) ) {
		tblhash != '' ? location.href=tblhash : location.href='index.php';
		return;
		}
		if ( $('#item').length == 1 ) {
		    if ( $(this).hasClass('on') ) {
		    //console.log('item=1 on');
		    $(this).removeClass('on');
		    $('#custom').addClass('hide-on-med-and-down show-on-large');
		    if ( $('#oos').length == 1 ) {
		        $('#oos').show();	
		        return;	
		    }
		    if ( $('#item').hasClass('favor') ) {
		        $('#item').removeClass('hide-on-small-only show-on-medium-and-up hide-on-med-and-down');
		    } else {
		        $('#item').addClass('hide-on-small-only show-on-medium-and-up');
		        $('#item').removeClass('hide-on-med-and-down');
                $('#topBG').removeClass('hide-on-med-and-down');
                $('#sitelogo').removeClass('hide-on-med-and-down');
                $('#siteinfo').removeClass('hide-on-med-and-down');

                $('.itemlist').removeClass('hide-on-med-and-down');
                //$('.itemlist').addClass('show-on-medium-and-up');

		    }
		        $('#category').removeClass('hide-on-med-and-down show-on-large');
		} else {
            logit('discount exists=' + $('#discount').length);;
			$(window).scrollTop(0);
			$(this).addClass('on');
			$('#custom').removeClass('hide-on-med-and-down show-on-large');
			if ( $('#oos').length == 1 ) {
				$('#oos').hide();	
				return;	
			}
            if(isFuture){
                $('#topBG').addClass('hide-on-med-and-down');
                $('#sitelogo').addClass('hide-on-med-and-down');
                $('#siteinfo').addClass('hide-on-med-and-down');
            }
			$('#category').addClass('hide-on-med-and-down show-on-large');
			$('#item').removeClass('hide-on-small-only show-on-medium-and-up');
			$('#item').addClass('hide-on-med-and-down');
            $('.itemlist').removeClass('show-on-medium-and-up');
            $('.itemlist').addClass('hide-on-med-and-down');
            $('#slideLeft').addClass('hide');
            $('#slideRight').addClass('hide');

		}
		} else {
			if ( $('#pay').is(':visible') ) {
console.log("0 items cart clicked");
                if(isFuture){
                    $('#topBG').addClass('hide-on-med-and-down');
                    $('#sitelogo').addClass('hide-on-med-and-down');
                    $('#siteinfo').addClass('hide-on-med-and-down');
                }
				$('#custom').removeClass('hide-on-med-and-down show-on-large');
				$('#pay').hide();
				$('#checkout').removeClass('disabled po');
			} else {
				$('#custom').addClass('hide-on-med-and-down show-on-large');
				$('#pay').show();
                $('#topBG').removeClass('hide-on-med-and-down');
                $('#sitelogo').removeClass('hide-on-med-and-down');
                $('#siteinfo').removeClass('hide-on-med-and-down');
				$(window).scrollTop(0);
			}
		}
});
if ( $('#pay').is(':visible') ) {
    console.log("hiding itemlist because pay is visible");
    $('#itemlist').addClass('hide');
    $('#slideLeft').addClass('hide');
    $('#slideRight').addClass('hide');

}
//if ( $('#mobnav').is(':visible') ) $('#category li.cat.on').removeClass('on');

if ( OFF == 11 ) {
	$('#favorite,#orders,#signin,#cart,#custom').addClass('hide');
	$('#category').removeClass('m3 l2').addClass('m4 l3');
	$('#item').removeClass('m9 l7').addClass('m8 l9');
}

function wkday(){
	var d=new Date(),wd=d.getDay(),hr=d.getHours(),min=d.getMinutes();
	//console.log('wd='+wd+' hr='+hr);
	var show=0;
	$('li.item').each(function(){
		show=0;
		var iid=$(this).data('iid');
		if ( typeof Iids[iid] == 'undefined' ) return;
		//console.log(iid);
		//console.log(Iids[iid]);
		//console.log(Iids[iid]['timer']);
		//if ( Iids[iid]['item_lunch'] == 1  ) {
		//	hr &gt; 15 ? $(this).hide() : $(this).show();
		//}
		wdshow=true;
		if ( typeof Iids[iid]['timer'] != 'undefined' ) {
			if ( /\d/.test(Iids[iid]['timer']) ) {
				var wds=JSON.parse(Iids[iid]['timer']);
				if ( wds ) {
					wds[wd] === '0' ? $(this).hide() : $(this).show();
					if(wds[wd] === '0') wdshow=false;
				}
			}
		}
		vtimeshow=false;
		if ( /\-/.test(Iids[iid]['vtime']) ) {
			ntime=hr*3600+min*60;
			var ps=Iids[iid]['vtime'].split(/;/);
			for(var i=0;i&lt;ps.length;i++) {
				var m=ps[i].match(/(\d{2}):(\d{2})-(\d{2}):(\d{2})/);
				if ( m ) {
					btime=Number(m[1])*3600+Number(m[2])*60;
					etime=Number(m[3])*3600+Number(m[4])*60;
					if(ntime&gt;btime &amp;&amp; ntime&lt;etime ){
						//show=1;
						vtimeshow=true;
					}
				} 
			}
			//show === 0 ? $(this).hide() : $(this).show();
		}else
			vtimeshow=true;

		if(wdshow &amp;&amp; vtimeshow) $(this).show();
		else  $(this).hide();
		
	});
    
	var items=$('li.item:visible').length;
	console.log('items='+items);
    if ( items == 0){
        if(isFuture != null){
            var cid = $('#category li.cat.on').data('cid');
            var catname =$('.cat[data-cid='+cid+']').text();
            console.log("catname" + catname);
            var item = catname.replace(/\n/g, ' ').replace(/\r/g, '');
            
                const match = item.match(/ *\([^)]*\) */g);
                if (match !== null) {
                    item = item.replace(/ *\([^)]*\) */g, '');  // Remove parentheses content
                    item = "&lt;h5&gt;" + item + "&lt;/h5&gt;" + "&lt;p&gt;" + match[0] + "&lt;/p&gt;";    // Append extracted content
                    catname = item;
                    console.log('catname: ' + catname);
                }
                else{
                    catname = "&lt;h5&gt;" + catname + "&lt;/h5&gt;";
                }
            $('#item').html('&lt;div class="item"&gt;' + catname + '&lt;p style="font-size:1.5em"&gt;No items available at this time&lt;/p&gt;&lt;/div&gt;'); 
        }else{
             $('#category li.cat.on').addClass('hide');
        }
    }
}

wkday();
myTime();

$('#pro').on('change',function(){
		var pro=$(this).val();
		console.log('changed pro:'+pro);
		var okkm=Cookies.get('kkm');
		console.log('okkm:'+okkm);
		$.ajax({url:'ajaxpro.php',data:{d:pro},success:function(d){
				var info=JSON.parse(d);
				console.log('back from ajaxpro:');
				//console.log(info);
				var akkm=Cookies.get('kkm');
				if ( typeof akkm != 'undefined' )  console.log('akkm:'+akkm);
				else { 
					console.log('setcookie with okkm');
					if ( typeof okkm != 'undefined' ) Cookies.set('kkm',okkm,{domain:'.kwickmenu.com',path:'/'});
				}
				if ( typeof okkm != 'undefined' ){
					  console.log('okkm:'+okkm);
				} else  console.log('okkm: undefined');
				
				if ( info.d &gt; 0 ) {
					var sub=Number($('#sub').attr('v'));
					if ( info.min &gt; 0 &amp;&amp; sub &lt; info.min ) {
						$('#pro').val('Minimum amount is $'+info.min.toFixed(2));
					} else {
						discount=info.d;
						mySum(1);
						$('#pro').removeClass('bad').addClass('good').val('').attr({placeholder:'Great! '+info.d+'% off'});
					}	
					$('#emptycart').hide();
					$('#checkout').addClass('disabled');
                    console.log('DISABLE 8 checkout ****');
				} else if ( info.d &lt; 0 ) {
					var sub=Number($('#sub').attr('v'));
					if ( info.min &gt; 0 &amp;&amp; sub &lt; info.min ) {
						$('#pro').val('Minimum amount is $'+info.min.toFixed(2));
					} else {
						discount=info.d;
						mySum(1);
						info.d=info.d*-1;
						$('#pro').removeClass('bad').addClass('good').val('').attr({placeholder:'Great! $'+info.d.toFixed(2)+' off'});
					}	
					$('#emptycart').hide();
					$('#checkout').addClass('disabled');
                    console.log('DISABLE 9 checkout ****');
				} else {
					$('#pro').removeClass('good').addClass('bad').val('').attr({placeholder:'Invalid Code!'});
				}
		} })
});

tbl=Cookies.get('tbl');
tblid=Cookies.get('tblid');
if ( typeof tbl == 'undefined' || tbl == 'undefined' || /expire/i.test(tbl) ) {
	console.log('init tbl tblid');
	tbl='';
	tblid=0
}
console.log('3657 tbl='+tbl);
console.log('3658 tblid='+tblid);

if ( onlineAnnounce != '' ) {
	var Ann=Cookies.get('Ann');
	if ( !Ann &amp;&amp; tblid == 0 ) { 
		var h="&lt;div class='row' style='padding:80px 50px'&gt;";
		h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
		h+="&lt;h5 class=center&gt;"+onlineAnnounce+"&lt;/h5&gt;";
		h+="&lt;/div&gt;";
		$('#msg .modal-content').html(h);
		$('#msg').modal({dismissible:true});
		$('#msg').modal('open');
		Cookies.set('Ann',1,{expires:0.1});
	}
}

if ( $('#maddress li.maddress').length &gt; 1 ) {
	spot=Cookies.get('spot');
	if ( spot ) spot=spot.replace(/\+/g,' ');
	if ( typeof spot != 'undefined' &amp;&amp; spot != '' ) {
		var h="&lt;div class='row' style='padding:80px 50px'&gt;";
		h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
		h+="&lt;h5 class=center&gt; We will deliver to your location&lt;h5&gt;&lt;br&gt;";
		h+="&lt;h4 class=center&gt;"+spot+"&lt;/h4&gt;";
		h+="&lt;/div&gt;";
		$('#msg .modal-content').html(h);
		$('#msg').modal({dismissible:true});
		$('#msg').modal('open');
	}
}

$('#sitelogo').on('click',function(){
		tblhash != '' ? location.href=tblhash : location.href='index.php';
		});

if ( tbl != '' ) {
	console.log('tble process ....');
	tblhash=window.location.href;
	console.log(tblhash);
	$('#pickup').hide();
	if ( $('#pcash').length == 1 ) {
		if ( qrtocfg['pay'] == 1 ) $('#pcash').hide();
		else $('#pcash').text('Later');
	} else {
		if ( qrtocfg['pay'] == 1 ) $('#pcash').hide();
		else {
			$('&lt;a class="btn-flat p" id=pcash&gt;Later&lt;/a&gt;').insertAfter($('#pcard'));
		}
		if (  site=='supremecrabredwood'  || site=='teastationsandiego'|| site=='teastationsandiego002' ) $('#pcash').hide();
	}

	if ( qrtocfg['share'] == 1 ) myShare(0);
	if ( qrtocfg['mark'] == 1 ) {
		$('&lt;style&gt;#custom h5:nth-child(1){position:relative;padding-left:60px}#custom h5:nth-child(1):before{position:absolute;left:30px;content:attr(s);display:inline-block;margin-right:10px;color:#69f}#custom h5:nth-child(1):after{position:absolute;left:0px;content:"account_circle";font-family:material icons;display:inline-block;margin-right:10px;color:#69f}.seat{position:relative;}.seat:before{position:absolute;font-size:23px;top:45px;color:#69f;left:3px;content:"person_pin_circle";font-family:material icons}.seat:after{position:absolute;font-size:12px;top:70px;left:0;width:28px;color:#69f;text-align:center;content:attr(s);}&lt;/style&gt;').appendTo('head');
	}

	$('#signin,#signin2,#delivery,#sidehours,#favorite,#sidefavor,#orders,#sideorder').remove();
	$('#slide-out li').eq(1).find('a').attr({href:tblhash});
	$('#slide-out li').eq(3).remove();
	$('#sidebar li span').remove();
	$('#sidebar li').eq(2).remove();
	$('#sidebar li').eq(2).remove();
	$('#sidebar li').eq(2).remove();
	$('#sidebar li').eq(2).remove();
	$('#sidetbl,#tblhelp,#tbldrink,#tblorder,#tblnew').show();
	$('#dinein').addClass('on').html('TABLE-'+tbl).show();
	$('#sidetbl').html('TABLE - '+tbl+'&lt;br&gt;&lt;i class=material-icons&gt;account_circle&lt;/i&gt; '+Fn+'&lt;br&gt;'+Ph);
	uid=-1;
	if ( qrtocfg['geo'] == 1 ) {
		if (navigator.geolocation) {
			var geo_timeout = setTimeout('geoFail()',6000);
			navigator.geolocation.getCurrentPosition(
					function(geo){
					console.log(geo);
					clearTimeout(geo_timeout);
					var mylat=geo.coords.latitude;
					var mylng=geo.coords.longitude;
					var dist=kpDist(lat,lng,mylat,mylng);
					console.log(dist);
					if ( dist &gt; 0.3 ) geoFail();
					else geoF=0;
					}, function(e){
					//console.log(e);
					clearTimeout(geo_timeout);
					geoFail();
					},{timeout:5000,enableHighAccuracy:true
					})
		} else geoFail();
	}
	hhost=qrtocfg['host'];
	ddevice=qrtocfg['device'];
	console.log('hhost:'+hhost +' ddevice:'+ddevice);
	console.log('Ph:'+Ph);
	if ( !/\d{3}/.test(Ph) ) {
		$('#tbl h5').text('TABLE - '+tbl);
		if ( qrtocfg['host'] == 1 || qrtocfg['device'] &gt; 0 ) {
			$.ajax({url:'ajaxQrt.php',data:{tid:tblid,tbl:tbl},success:function(data){
					var info=JSON.parse(data);
					console.log(info);
					guests=info.guests;
					if ( info['device'] &gt; 0 ) {
					$('#QRdev').removeClass('hide');
					$('#QRdev b').removeClass('hide');
					$('#tbl a').addClass('hide');
					$('#tbl label.col').addClass('hide');
					$('#tbl').modal({dismissible:false});
					$('#tbl').modal('open');
					return;
					}
					if ( info['table'] == 1 || /failed/i.test(info['status']) ) {
					console.log('table 1 Ph:'+Ph);
					$('#QRoff').removeClass('hide');
					$('#QRoff b').removeClass('hide');
					$('#tbl a').addClass('hide');
					$('#tbl label.col').addClass('hide');
					$('#tbl').modal({dismissible:false});
					$('#tbl').modal('open');
					} else {
						console.log('table not 1 Ph');
						$('#QRoff').addClass('hide');
						$('#QRoff b').addClass('hide');
						$('#tbl a').removeClass('hide');
						$('#tbl').modal({dismissible:false});
						$('#tbl').modal('open');
					}
			}});
		} else {
			if ( !/\/kpap.php/.test(tblhash) ) {
				$('#tbl').modal({dismissible:false});
				$('#tbl').modal('open');
			}
		}
	}
	var d = new Date();
	var myorder=localStorage.getItem('myorder');
	if ( /mtime/i.test(myorder) ) {
		var v=0,mynew=[];
		myorders=JSON.parse(myorder);
		for(var i=0;i&lt;myorders.length;i++){
			var myorder=myorders[i];
			var diff=d.getTime() - myorder.mtime;
			if ( diff &lt; 3600*3000 ) {
				mynew.push(myorder);
				if ( myorder.p == 0 ) v+=Number(myorder.sub);
			}
		}
		//localStorage.setItem('myorder',JSON.stringify(mynew));
		if ( discount &gt;= 0 ) var dist=v*discount/100;
		else var dist=discount*-1;
		var tax=(v-dist)*taxrate/100;
		if ( surcharge &gt; 0 ) tax+=(v-dist+tax+kFee)*surcharge/100;
		var total=v-dist+tax+kFee;
		$('#tblnew').attr({v:'$'+total.toFixed(2)});
		if ( total &gt; 0 &amp;&amp; qrtocfg['device'] &gt; 0 ) $('#tbldevice').addClass('hide'); 
	}
}

$('#sidetbl').on('click',function(){
		$('#tbl h5').text('TABLE - '+tbl);
		if ( qrtocfg['host'] == 1 || qrtocfg['device'] &gt; 0 ) {
		$.ajax({url:'ajaxQrt.php',data:{tid:tblid,tbl:tbl},success:function(data){
				var info=JSON.parse(data);
				console.log(info);
				if ( info['device'] &gt; 0 ) {
				$('#QRdev').removeClass('hide');
				$('#QRdev b').removeClass('hide');
				$('#tbl a').addClass('hide');
				$('#tbl label.col').addClass('hide');
				$('#tbl').modal({dismissible:false});
				$('#tbl').modal('open');
				return;
				}
				if ( info['table'] == 1 ) {
				console.log('table 1 sidetbl');
				$('#QRoff').removeClass('hide');
				$('#tbl a').addClass('hide');
				$('#tbl label.col').addClass('hide');
				$('#tbl').modal({dismissible:false});
				$('#tbl').modal('open');
				} else {
				console.log('table not 1 sidetbl');
				$('#QRoff').addClass('hide');
				$('#tbl a').removeClass('hide');
				$('#cname').val(Fn);
				$('#cphone').val(Ph);
				$('#cemail').val(Em);
				$('#tbl').modal({dismissible:true});
				$('#tbl').modal('open');
				}
		}});
		} else {
			$('#cname').val(Fn);
			$('#cphone').val(Ph);
			$('#cemail').val(Em);
			$('#tbl').modal({dismissible:true});
			$('#tbl').modal('open');
		}
});
$('#tbl input').on('keyup',function(){
		var cname=$('#cname').val();
		var cphone=$('#cphone').val().replace(/\D/,'');
		var email=$('#cemail').val();
		var guests=$('#guests').val();
		$('#tbl a').removeClass('disabled');
		if ( cname == '' &amp;&amp; /req/i.test($('#cname').data('req')) ) $('#tbl a').addClass('disabled');
		if ( cphone == '' &amp;&amp; /req/i.test($('#cphone').data('req')) ) $('#tbl a').addClass('disabled');
		if ( cemail == '' &amp;&amp; /req/i.test($('#cemail').data('req')) ) $('#tbl a').addClass('disabled');
		if ( guests == '' &amp;&amp; /req/i.test($('#guests').data('req')) ) $('#tbl a').addClass('disabled');
});
$('#tbl b').on('click',function(){
		if ( $('#custom').is(':visible') ) $('#mobcart').trigger('click');
});
$('#tbl a').on('click',function(){
		$(this).addClass('disabled');
		var cname=$('#cname').val();
		if ( cname == '' ) cname='VIP-'+tbl;
		uid=-1;
		Em=$('#cemail').val();
		Ph=$('#cphone').val().replace(/\D/,'');
		guests=$('#guests').val();
		$.ajax({url:'ajaxQrt.php',data:{guests:guests,tid:tblid,tbl:tbl}});
		if ( Ph == '' ) {
			Ph='0000000000'+tblid;
			Ph=Ph.slice(-10);
		}
		Fn=cname.split(/\s/)[0];
		Ln=cname.split(/\s/)[1];
		var kkm=[];
		kkm[0]=uid;
		kkm[1]=Fn;
		kkm[2]='';
		kkm[3]=Ph;
		kkm[4]=Ln;
		kkm[5]=Em;
		kkm=kkm.join('|');
		//Cookies.set('kkm',kkm,{domain:'.kwickmenu.com'});
		console.log('set kkm tbl');
		Cookies.set('kkm',kkm,{domain:'.kwickmenu.com'});
		$('#fn').val(Fn);
            logit(' SET fn 4:'+Fn);
		$('#ln').val(Ln);
		$('#ph').val(Ph);
		$('#em').val(Em);
		$('#sidetbl').html('TABLE - '+tbl+'&lt;br&gt;&lt;i class=material-icons&gt;account_circle&lt;/i&gt; '+Fn+'&lt;br&gt;'+Ph);
});
$('#tblnew').on('click',function(){
		var d = new Date();
		var myorder=localStorage.getItem('myorder');
		var height=$(window).height()-200;;
		if ( !myorder || myorder == '' || myorder == 'undefined' ) {
		var h="&lt;div class='row center'&gt;";
		h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
		h+="&lt;br&gt;&lt;h5&gt;No orders found&lt;/h5&gt;&lt;br&gt;&lt;p&gt;Un-paid orders can be found here.&lt;/p&gt;&lt;/div&gt;";
		} else {
		myorders=JSON.parse(myorder);
		var htm='';
		for(var i=0;i&lt;myorders.length;i++){
		var myorder=myorders[i];
		var diff=d.getTime() - myorder.mtime;
		if ( diff &gt; 3600*3000 || myorder.p == 1 ) {
		console.log('remove old '+diff);
		} else {
		htm+='&lt;ul class="mylist row"&gt;'+myorder.htm+'&lt;/ul&gt;';
		}
		}
		if ( htm == '' ) {
			var h="&lt;div class='row center' style='height:"+height+"px;overflow-y:auto;margin-top:20px;'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+="&lt;br&gt;&lt;h5&gt;No order found&lt;/h5&gt;&lt;br&gt;&lt;p&gt;Orders you placed can be found here&lt;/p&gt;&lt;/div&gt;";
		} else {
			var h="&lt;div class='row center' style='height:"+height+"px;overflow-y:auto;margin-top:20px;'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+=htm;
			h+='&lt;/div&gt;';
			h+='&lt;div class="row center"&gt;&lt;a class="modal-close btn red darken-4 white-text" id=paynow&gt;Pay Now&lt;/a&gt;&lt;/div&gt;';
		}
		}
		$('#msg .modal-content').html(h);
		$('#msg').modal({dismissible:true});
		$('#msg').modal('open');
});
$('#tblorder').on('click',function(){
		var d = new Date();
		var myorder=localStorage.getItem('myorder');
		var height=$(window).height()-200;;
		if ( !myorder || myorder == '' || myorder == 'undefined' ) {
		var h="&lt;div class='row center'&gt;";
		h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
		h+="&lt;br&gt;&lt;h5&gt;No paid orders found&lt;/h5&gt;&lt;br&gt;&lt;p&gt;Paid orders will be listed here.&lt;/p&gt;&lt;/div&gt;";
		} else {
		myorders=JSON.parse(myorder);
		var htm='';
		for(var i=0;i&lt;myorders.length;i++){
		var myorder=myorders[i];
		var diff=d.getTime() - myorder.mtime;
		if ( diff &gt; 3600*3000 || myorder.p == 0 ) {
		console.log('remove old '+diff);
		} else {
		htm+='&lt;ul class="mylist row"&gt;'+myorder.htm+'&lt;/ul&gt;';
		}
		}
		if ( htm == '' ) {
			var h="&lt;div class='row center' style='height:"+height+"px;overflow-y:auto;margin-top:20px;'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+="&lt;br&gt;&lt;h5&gt;No order found&lt;/h5&gt;&lt;br&gt;&lt;p&gt;Orders you placed can be found here&lt;/p&gt;&lt;/div&gt;";
		} else {
			var h="&lt;div class='row center' style='height:"+height+"px;overflow-y:auto;margin-top:20px;'&gt;";
			h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
			h+=htm;
			h+='&lt;/div&gt;';	
		}
		}
		$('#msg .modal-content').html(h);
		$('#msg').modal({dismissible:true});
		$('#msg').modal('open');
});
$('#tblmanage').on('click',function(){
		var i=$(this).find('i');
		if ( /add/.test(i.text()) ){
		i.text('notifications_active');
		M.toast({html:'Request sent. Manage is coming to help you now!',classes:'blue darken-4 tcenter'});
		setTimeout(function(){$('#tblthumb i').text('add_alert');},60000);
		$.ajax({url:'ajaxMsg.php',data:{msg:'manager'}});
		} else {
		M.toast({html:'Request sent already.'});
		}
		})
$('#tblthumb').on('click',function(){
		var i=$(this).find('i');
		if ( /thumb/.test(i.text()) ){
		i.text('tag_faces');
		M.toast({html:'Big thumb sent. We are glad that you like it!',classes:'blue darken-4 tcenter'});
		setTimeout(function(){$('#tblthumb i').text('thumb_up');},60000);
		$.ajax({url:'ajaxMsg.php',data:{msg:'thumb'}});
		} else {
		M.toast({html:'Request sent already.'});
		}
		});
$('#tbldrink').on('click',function(){
		var i=$(this).find('i');
		if ( /drink/.test(i.text()) ){
		i.text('local_bar');
		M.toast({html:'Drink refill sent. Your server will be here momentary.',classes:'blue darken-4 tcenter'});
		setTimeout(function(){$('#tbldrink i').text('local_drink');},60000);
		$.ajax({url:'ajaxMsg.php',data:{msg:'drink'}});
		} else {
		M.toast({html:'Request sent already.'});
		}
		});
$('#tblhelp').on('click',function(){
		var i=$(this).find('i');
		if ( /person/.test(i.text()) ){
		i.text('notifications_active');
		M.toast({html:'Request sent. Your server will be here momentarily.',classes:'blue darken-4 tcenter'});
		setTimeout(function(){$('#tblhelp i').text('person');},60000);
		$.ajax({url:'ajaxMsg.php',data:{msg:'help'}});
		} else {
		M.toast({html:'Request sent already.'});
		}
		});
$('#tbldevice').on('click',function(){
		var v=Number($('#tblnew').attr('v'));
		if ( v &gt; 0 ) 
		M.toast({html:'This device has unpaid balance, cannot be removed'});
		else { 
		M.toast({html:'This device released now'});
		$.ajax({url:'ajaxQrt.php',data:{rmd:1,tid:tblid,tbl:tbl}});
		}
		});
$(document).on('click','#paynow',function(){
		M.toast({html:'Request sent. Your server will be here momentarily.',classes:'blue darken-4 tcenter'});
		$.ajax({url:'ajaxMsg.php',data:{msg:'pay'}});
		});
$(document).on('click','#caddress',function(){
		$('#checkout').removeClass('po');
		$('#delivery').trigger('click');
		});
$(document).on('click','#curbside',function(){
		if ( $(this).hasClass('yes') ) 
		$(this).removeClass('yes');
		else
		$(this).addClass('yes');
});



$('#lang,#lang2,#moblang').on('click',function(){
		lang=Cookies.get('lang');
		//console.log('lang before:'+lang);
		lang == 'en' ? Cookies.set('lang','cn') : Cookies.set('lang','en');
		lang=Cookies.get('lang');
		//console.log('lang after :'+lang);
		location.reload(true);
});
$(document).on('click','#maddress a',function(){
	var address=$('#maddress li.checked').text().replace(/check_box.*/,'');
	$('#pickupaddress').html('PICKUP FROM:&lt;br&gt;'+address);
	if ( $('#checkout').hasClass('pickupaddresson') ) {
	$('#checkout').removeClass('pickupaddresson').trigger('click');
	}
});
$(document).on('click','#maddress li.maddress',function(){
	$('#maddress li.maddress.checked').removeClass('checked');
	$(this).addClass('checked');
	$('#maddress a').removeClass('disabled');
	});

$('#trxpay').on('click',function(){
        $('#trxpay').addClass('on');
        $('#checkout').trigger('click');
});

function chkInv(){
	var size = Object.keys(myInv).length;
	//console.log('size='+size);
	//console.log(myInv);
	if ( size &gt; 2 ) {
		gotInv=1;
		$('#list li').each(function(){
				var iid=$(this).data('iid').toString().replace(/\D.*/,'');
				if ( myInv[iid] !== undefined  ) {
				myInv[iid]-=Number($(this).find('b.q').text());
				}
				});	
				$('#item li.item,#category li.item').removeClass('soldout');
				$('#item li.item,#category li.item, .itemlist li.item').each(function(){
				var iid=$(this).data('iid');
				if ( myInv[iid] &lt; 1  ) $(this).addClass('soldout');
				});
	} else {
		gotInv=0;
		//console.log('no inventory control');
	}
}
function getInv(){
	var thisInv=Date.now();
	var du=Math.floor((thisInv - lastInv)/1000);
	//console.log('getInv du='+du);
	console.log(' --- getInv called 0 ');
	var d=new Date(),wd=d.getDay();
	for(var cid in Cats )  {
		var show=0;//check for onday
		for(var iid in Iids) {
			if ( Iids[iid]['category_id'] == cid ) {
				if ( Iids[iid]['timer'] != '' ) {
                                	var wds=JSON.parse(Iids[iid]['timer']);
                                	if ( wds ) {
                                        	wds[wd] === '0' ? show=0 : show=1;
                                	}
				} else show=1;
			}
			if ( show == 1 ) break;
		}
        var show2 = 0; //check for ontime
        $('.itemlist[data-cid=' + cid + '] li').each(function() {
            if ($(this).css('display') !== 'none') {
                show2 = 1;
                return false;
            }
        });
		//console.log(Cats[cid]['category']+' show:'+show);
		if ( show == 0) {
            var catname =$('.cat[data-cid='+cid+']').text();
            if(isFuture == null){ 
                console.log('hiding: ' + catname);
                $('#category li.cat[data-cid='+cid+']').addClass('hide');
            }else if(isFuture != null &amp;&amp; show2 == 0){
                item = catname.replace(/\n/g, ' ').replace(/\r/g, '');
                const match = item.match(/ *\([^)]*\) */g);
                if (match !== null) {
                    item = item.replace(/ *\([^)]*\) */g, '');  // Remove parentheses content
                    item = item + "&lt;p&gt;" + match[0] + "&lt;/p&gt;";    // Append extracted content
                    catname = item;
                }
                
                $('.itemlist[data-cid='+cid+']').html('&lt;h5&gt;' + catname  + '&lt;/h5&gt;&lt;div style="font-size:1.5em;padding-left:12px;padding-top:20px"&gt;No items available at this time&lt;/div&gt;');

            }
		} else {
            $('#category li.cat[data-cid='+cid+']').removeClass('hide');
            $('#itemlist[data-cid='+cid+']').removeClass('hide')
        }
	}
	if ( du &gt; 120 ) {
		lastInv=thisInv;	
		$.ajax({url:'ajaxInv.php',success:function(data){
			//console.log('ajaxInv return');
			myInv=JSON.parse(data);
			if(site=='quartersteahouse')
				console.log(myInv);
			chkInv();
		}});
	}
}
getInv();
console.log(' --- getInv called 3 ');
function maxInv(m){
	var h="&lt;div class='row'&gt;";
	h+="&lt;a class='modal-close fancyclose'&gt;&lt;i class='material-icons md-36'&gt;close&lt;/i&gt;&lt;/a&gt;";
	h+="&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h4 class=center&gt;Only "+m+" left!&lt;/h4&gt;&lt;br&gt;&lt;br&gt;";
	h+="&lt;p class=center&gt;Sorry, you can't add more.&lt;/p&gt;&lt;br&gt;&lt;br&gt;";
	h+="&lt;p class=center&gt;&lt;a class='modal-close btn-large redkp'&gt;Close&lt;/a&gt;&lt;/p&gt;";
	h+="&lt;/div&gt;";
	$('#invmsg .modal-content').html(h);
	$('#invmsg').modal({dismissible:true});
	$('#invmsg').modal('open');
}
});

function logit( data ){
	if ( typeof debug != 'undefined' &amp;&amp; debug){
            var info2 = document.getElementById('info2');
            info2.innerHTML += data +' &lt;br&gt; ';
            console.log(data);
    	}
}


function responseHandler(response){
        console.log('responseHandel');
        console.log(response);
        if(response.messages.resultCode === "Error"){
                console.log('ERROR');
                var i=0;
                errorlen=response.messages.message.length;
                console.log('ERRORlen'+errorlen);
		code='';
                while(i&lt;response.messages.message.length){
			code= response.messages.message[i].code;
                        console.log( response.messages.message[i].code+":"+
                        response.messages.message[i].text)
                        i++;
                }
                alert('Card error. Please contact store to order. '+code);
        }else{
                if(response.opaqueData.dataDescriptor=='COMMON.ACCEPT.INAPP.PAYMENT'){
                        $('#pcash').removeClass('on');
                        $('#po2,#checkout').addClass('disabled');
                    console.log('DISABLE 10 checkout ****');
                        cn=response.encryptedCardData.cardNumber;
                        last4=cn.substring(cn.length-4,cn.length);
                        console.log('last4:'+last4);
                        exp=response.encryptedCardData.expDate;
                        console.log('exp:'+exp);
                        document.getElementById("card").value = response.opaqueData.dataValue;
                        document.getElementById("cexp").value = exp;
                        document.getElementById("cvv").value = last4;
                        document.getElementById("czip").value = '00000';
                        console.log(response.opaqueData.dataValue);
                        $('#checkout').trigger('click');
                }else{
                	alert('Card error. Please contact store to order. 0');
                }
        }
    //alert("response");
}


var LZ={
	en: function (s) {
		    var dict = {};
		    var data = (s + "").split("");
		    var out = [];
		    var currChar;
		    var phrase = data[0];
		    var code = 256;
		    for (var i=1; i&lt;data.length; i++) {
			    currChar=data[i];
			    if (dict[phrase + currChar] != null) {
				    phrase += currChar;
			    }
			    else {
				    out.push(phrase.length &gt; 1 ? dict[phrase] : phrase.charCodeAt(0));
				    dict[phrase + currChar] = code;
				    code++;
				    phrase=currChar;
			    }
		    }
		    out.push(phrase.length &gt; 1 ? dict[phrase] : phrase.charCodeAt(0));
		    for (var i=0; i&lt;out.length; i++) {
			    out[i] = String.fromCharCode(out[i]);
		    }
		    return out.join("");
	    },

	de: function (s) {
		    var dict = {};
		    var data = (s + "").split("");
		    var currChar = data[0];
		    var oldPhrase = currChar;
		    var out = [currChar];
		    var code = 256;
		    var phrase;
		    for (var i=1; i&lt;data.length; i++) {
			    var currCode = data[i].charCodeAt(0);
			    if (currCode &lt; 256) {
				    phrase = data[i];
			    }
			    else {
				    phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
			    }
			    out.push(phrase);
			    currChar = phrase.charAt(0);
			    dict[code] = oldPhrase + currChar;
			    code++;
			    oldPhrase = phrase;
		    }
		    return out.join("");
	    },

	tb: function (string) {
		    const codeUnits = new Uint16Array(string.length);
		    for (let i = 0; i &lt; codeUnits.length; i++) {
			    codeUnits[i] = string.charCodeAt(i);
		    }
		    const charCodes = new Uint8Array(codeUnits.buffer);
		    let result = '';
		    for (let i = 0; i &lt; charCodes.byteLength; i++) {
			    result += String.fromCharCode(charCodes[i]);
		    }
		    return result;
	    },

	fb: function (binary) {
		    const bytes = new Uint8Array(binary.length);
		    for (let i = 0; i &lt; bytes.length; i++) {
			    bytes[i] = binary.charCodeAt(i);
		    }
		    const charCodes = new Uint16Array(bytes.buffer);
		    let result = '';
		    for (let i = 0; i &lt; charCodes.length; i++) {
			    result += String.fromCharCode(charCodes[i]);
		    }
		    return result;
	    }
}

function atou(b64) {
  return decodeURIComponent(escape(atob(b64)));
}

function utoa(data) {
  return btoa(unescape(encodeURIComponent(data)));
}

function trxSubmit(){
        //document.trxform.ud_phone.value = '5555555555';
        //alert('submit 2');
        //$('#checkout').trigger('click');
        return false;
}

function updatetrxform(to,ooqid,site,phone,cname){
        document.trxform.Amount.value = to;
        document.trxform.ud_ooqid.value = ooqid;
        document.trxform.ud_site.value = site;
        document.trxform.ud_phone.value = phone;
        document.trxform.ud_cname.value = cname;
        return true;
}

</pre></body></html>