﻿window.defaultStatus = ' ';

//var FlashTrackingIsEnabled = true; // enable Google Analytics to track Flash and other non-page events

var _dBug = 0;
var _dBugKeyBuffer = 0;
var gkeyString = '';

var flashIsInstalled = true;

var mapHasNotBeenWritten = true;

var startMenuIndex = '';	// automatically display the selected menu layer, if any, when the website opens

var showMessage = false;  // indicates whether an initial greeting message will be displayed before any other content

var motto = '&ldquo; Let The Tiger Make Your Meal &rdquo;';
var telephoneNumber = '(937) 878-2583';
var ohioSalesTax = 6.5; // Greene county (OH); see https://thefinder.tax.ohio.gov/StreamlineSalesTaxWeb/ZipLookup/LookupByZip.aspx?taxType=Sales

var MenuHelpIsActive = false;

var chineseNewYear = false;

var cssTextLeft   = "'text-align: left;   width: 650px; margin: auto;'";     // 650
var cssTextCenter = "'text-align: center; width: 650px; margin: auto;'";
var cssTextRight  = "'text-align: right;  width: 650px; margin: auto;'";
var cssTextJustify  = "'text-align: justify;  width: 650px; margin: auto;'";

var pTextLeft   =  '<p style=' + cssTextLeft   + '>';
var pTextRight  =  '<p style=' + cssTextRight  + '>';
var pTextCenter =  '<p style=' + cssTextCenter + '>';
var pTextDefault = pTextCenter;
var pClose = '</p>'; 


var dTextLeft   =  '<div style=' + cssTextLeft   + '>';
var dTextRight  =  '<div style=' + cssTextRight  + '>';
var dTextCenter =  '<div style=' + cssTextCenter + '>';
var dTextJustify =  '<div style=' + cssTextJustify + '>';
var dTextDefault = dTextCenter;
var dClose = '</div>';

var deltaSharpness = 1;
var deltaGamma = 1;
var deltaColor = 1;

var rangeSharpness = 'ae';
var rangeGamma = 'ae';
//var rangeColor = 5;
//var colorIndex = 1;

var menuSelectedColor = '#FF3300';
var activeLayer = '';
var prevItem = '';	

var meal = 'lunch';
var menuSearchTxt = '';

var defaultMinCost = 2.50;
var defaultMaxCost = 130.50;
var minCost = defaultMinCost;
var maxCost = defaultMaxCost;
var costMode = 'a';
	// a - no price entered on form
	// b - set median price
	// c - set max cost
	// d - set min cost
	// e - set exact price
	// f - specify price range

var menuState = 1;	// sets the pane of menu controls displayed
	// 1 - simple pane ( beef, chicken selections, etc.)
	// 2 - advanced pane (search, sort, spicy & mild, etc.)

var menuPHPfile = 'menu10.php';

var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1; //alert( InternetExplorer );

var hideButtonsAsNecessary = true;
var doNotHideButtons = false;

var updateTheItemCount = true;	// determines whether the parent frame will display the menu count data from the iframe child menu

var gb_weJustViewedSelections = false;
var gs_bGroundImg = '';
var gs_streetViewImg = './pix/streetView_0.jpg';
var gb_googleStreetViewIsActive = false;
var gb_vistaLayerIsActive = false;
var gl_mainLayerIMGOpacity = 0;





var gi_fadeSpeedValue = 600;
var gb_FadingIsActive = false;

var faderValue = 99; // can't do '100' because of a FF bug
var faderPlus = 0;
var faderMinus = 1;

var faderAdjust = 1;
var faderHiBound = 100;
var faderLoBound = 40;  //40

var _timerID = 0; 
var TimerIsRunning = false;


var gs_themeMainLayerIMGsrc = './pix/frame1SaIeMa.jpg';
var gl_themeOpacity = 1;
var gs_themeBackgroundIMGsrc = './pix/bg14a_1.jpg';


var myDays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var myMonths = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var currentDate = new Date();

var thisHour = currentDate.getHours();

var thisMinute = currentDate.getMinutes();

var thisDay = currentDate.getDay();
thisDay = myDays[thisDay];

var thisDayOfMonth = currentDate.getDate();

var thisMonth = currentDate.getMonth();
thisMonth = myMonths[thisMonth];

var thisYear = currentDate.getFullYear();



Event.observe( window, 'load', function() {
	Prep();
});





//alert( 'MSIE6: ' + MSIE6 );

/////////////////////////////////////////////////////////////
// used to detect keystrokes
/////////////////////////////////
var blnDOM = false, blnIE4 = false, blnNN4 = false; 

if (document.layers) blnNN4 = true;
else if (document.all) blnIE4 = true;
else if (document.getElementById) blnDOM = true;

function getKeycode(e) {
  var gkeyCode;
  var _tmp = '/ControlSearch_';

  if (blnDOM) {	// FireFox
    var blnkey = e.which
	//alert( blnkey );
	_dBugKeyBuffer += blnkey; 
    gkeyCode = ( blnkey );
	gkeyString = String.fromCharCode( gkeyCode );
	
  }
  if (blnIE4) {		// MSIE 6
    var IE4key = event.keyCode
	// alert( IE4key );
	_dBugKeyBuffer += IE4key;
	gkeyCode = ( IE4key );
	gkeyString = String.fromCharCode( gkeyCode );
	}

	//alert( gkeyCode );
	if( gkeyCode === 13 ) {
		if( $(_menuSearch).value.length ) {
			_tmp += $(_menuSearch).value;
		} else {
			_tmp += 'blank';
		}

		_gaq.push(['_trackEvent', 'controls', 'search', _tmp]);
		// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview( _tmp ); }
		refreshButtonControl( meal, true );
	}
}

document.onkeydown = getKeycode
if (blnNN4) document.captureEvents(Event.KEYDOWN)



// this is MSIE only
////////////////////
function Flying_Tiger_Chinese_DoFSCommand(command, args) {
	var Flying_Tiger_ChineseObj = InternetExplorer ? Flying_Tiger_Chinese : document.Flying_Tiger_Chinese;
	if( command === 'setStatus' ) { updateWinStatus( args ); }
	if( command === 'hidePanel' ) { hidePanel( args ); }
	if( command === 'showPanel' ) { showPanel( args ); }
}
////////////////////


function hidePanel( _panel ) { 
	if( _dBug === 1 ) { alert( 'hidepanel ' + _dBugKeyBuffer ); }

	if( chineseNewYear ) {
		checkChineseNewYear();
		showInfoLayer();
	}
	
	if( activeLayer ) {
		$(activeLayer).cover();
		$( 'guiButtonLayer' ).cover();
		
		if( prevItem === 'welcomeLayer' ) { $( 'welcomeLayerScroller' ).cover(); } 
		if( prevItem === 'menuLayer' ) {
			$( 'menuOptionsLayer' ).cover();
			$( 'menuLayerScroller' ).cover();
			$( 'clearMenuBTN' ).cover();
			$( 'selectMenuBTN' ).cover();
		}
		if( prevItem === 'mapLayer' )     { $( 'googleMan' ).cover(); }

		if( prevItem === 'hoursLayer' )   { $( 'hoursMsg' ).cover();  }




		$( 'statusLayer' ).cover();
		$( 'itemCountLayer' ).cover();
		
		showInfoLayer();
		hideDragBar();

		_gaq.push(['_trackEvent', 'controls', 'menubar', 'hide panel']);
		// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUhidePanel"); }
	}
}

function showPanel( _panel ) {
	if( activeLayer ) {
		$(activeLayer).uncover();
		$( 'guiButtonLayer' ).uncover();
		
		if( prevItem === 'welcomeLayer' ) { $(
			'welcomeLayerScroller' ).uncover();
			showDragBar();
		} 
		if( prevItem === 'menuLayer' ) {
			$( 'menuOptionsLayer' ).uncover();
			$( 'menuLayerScroller' ).uncover();
			statusLayer( hideButtonsAsNecessary );
		}
		if( prevItem === 'hoursLayer' ) {
			showDragBar();
			$( 'hoursMsg' ).uncover();
		}
		if( prevItem === 'phoneLayer' ) {
			showDragBar();
		}
		if( prevItem === 'mapLayer' ) {
			$( 'googleMan' ).uncover();
		}
		if( prevItem === 'tourLayer' ) {
			showDragBar();
		}

		
		hideInfoLayer();

		_gaq.push(['_trackEvent', 'controls', 'menubar', 'show panel']);
		// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowPanel"); }
	}
}




function updateWinStatus( _text ) {
	switch( _text ) {
		case 'menu':
			return winStatus(' Browse our delicious menu ');
			break;

		case 'hours':
			return winStatus(' Dine with us 7 days a week ');
			break;

		case 'phone':
			return winStatus(' Reserve your table or call-in a takeout order ');
			break;
		
		case 'map':
			return winStatus(' Find us fast with our interactive map ');
			break;
		
		case 'tour':
			return winStatus(' Come see the restaurant ');
			break;

		case 'welcome':
			return winStatus(' Greetings from the manager ');
			break;
		
		case '(next menu)':
			return winStatus(' [more options...] ');
			break;
			
		case '(main menu)':
			return winStatus(' [return to the main menu] ');
			break;
	}
}

function winStatus( _msg ) {
	window.status = _msg;
	return true;
}




function doMenu( _item ) {
	messageControl(); // if there's a greeting message, handle it
	
	activeLayer = _item + 'Layer';

	//if( chineseNewYear ) { checkChineseNewYear(); }

	$( 'guiButtonLayer' ).uncover();

	if( activeLayer != prevItem ) { 
		hideInfoLayer();

		if( prevItem ) {
			$( prevItem ).cover();
			if( prevItem === 'menuLayer' ) {
				$( 'menuLayerScroller' ).cover();
				$( 'menuOptionsLayer' ).cover();
				$( 'statusLayer' ).cover();
				$( 'itemCountLayer' ).cover();
				$( 'clearMenuBTN' ).cover();
				$( 'selectMenuBTN' ).cover();
			}
			if( prevItem === 'welcomeLayer' ) {
				$( 'welcomeLayerScroller' ).cover();
			}
			if( prevItem === 'mapLayer' ) {
				$( 'googleMan' ).cover();
			}
			if( prevItem === 'hoursLayer' ) {
				$( 'hoursMsg' ).cover();
			}
		}

		switch( activeLayer ) {
			case 'welcomeLayer':
				$( 'welcomeLayer' ).uncover();
				$( 'welcomeLayerScroller' ).uncover();

				showDragBar();

				_gaq.push(['_trackEvent', 'controls', 'menubar', 'Welcome']);
				//if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowWelcome"); }
				break;
			
			case 'menuLayer':
				$( 'menuLayer' ).uncover();
				$( 'menuLayerScroller' ).uncover();
				$( 'menuOptionsLayer' ).uncover();
				$( 'itemCountLayer' ).uncover();
				$( 'clearMenuBTN' ).cover();
				$( 'selectMenuBTN' ).cover();

				fadeLayerDown();
				
				statusLayer( hideButtonsAsNecessary );
				itemCount();

				hideDragBar();

				_gaq.push(['_trackEvent', 'controls', 'menubar', 'Menu']);
				//if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowMenu"); }
				break;
			
			case 'hoursLayer':
				writeHoursLayer();
				$( 'hoursLayer' ).uncover();

				$( 'hoursMsg' ).uncover();

				updateHoursMessage();

				showDragBar();

				_gaq.push(['_trackEvent', 'controls', 'menubar', 'Hours']);
				//if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowHours"); }
				break;
			
			case 'phoneLayer':
				$( 'phoneLayer' ).uncover();

				showDragBar();

				_gaq.push(['_trackEvent', 'controls', 'menubar', 'Phone']);
				//if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowPhone"); }
				break;
			
			case 'mapLayer':
				$( 'mapLayer'  ).uncover();
				$( 'googleMan' ).uncover();

				hideDragBar();

				if( mapHasNotBeenWritten ) { writeMapLayer(); }

				_gaq.push(['_trackEvent', 'controls', 'menubar', 'Map']);
				//if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowMap"); }
				break;
			
			case 'tourLayer':
				$( 'tourLayer' ).uncover();

				showDragBar();

				_gaq.push(['_trackEvent', 'controls', 'menubar', 'Tour']);
				//if( FlashTrackingIsEnabled ) { pageTracker._trackPageview("/MENUshowTour"); }
				break;
		}
		prevItem = activeLayer;

	}
}



function updateHoursMessage() {
	$( 'hoursMsg' ).update( getLunchPhrase() );
}




function getTheTime() {
	var currentDate = new Date();

	thisHour = currentDate.getHours();

	thisMinute = currentDate.getMinutes();

	thisTime = createTheTime();

	thisDay = currentDate.getDay();
	thisDay = myDays[thisDay];

	thisDayOfMonth = currentDate.getDate();

	thisMonth = currentDate.getMonth();
	thisMonth = myMonths[thisMonth];

	thisYear = currentDate.getFullYear();
}
function createTheTime( _h, _m ) {
	var _m = _m || thisMinute;
	var _h = _h || thisHour;
	var _val;
	
	_h += '';
	_m = _m < 10 ? '0' + _m : _m + '';
	_val = _h + _m;
	_val = parseInt( _val, 10 );
	return _val;
}


function getFormattedTime( _format, _hourMinute ) {
	var _format = _format || '12';
	var _val;
	var _h;
	var _m;
	var _x;

	_format += '';
	_format = _format.toLowerCase();

	getTheTime();
	_h = thisHour;
	_m = thisMinute;
	
	if( _hourMinute ) {
		_hourMinute += '';

		switch( _hourMinute.length ) { 
			case 4:		// 1420
				_h = parseInt( _hourMinute.substr( 0, 2 ), 10 );
				_m = parseInt( _hourMinute.substr( 2, 2 ), 10 );
				break;

			case 3:		// 0420
				_h = parseInt( _hourMinute.substr( 0, 1 ), 10 );
				_m = parseInt( _hourMinute.substr( 1, 2 ), 10 );
		}		
	}

	switch( _format ) {
		case '24':
			_h = _h < 10 ? '0' + _h : _h + '';
			_m = _m < 10 ? '0' + _m : _m + '';
			_val = _h + ':' + _m;
			break;

		case 'military':
			_h = _h < 10 ? '0' + _h : _h + '';
			_m = _m < 10 ? '0' + _m : _m + '';
			_val = _h + _m + ' HRS';
			break;

		case '12':
			_m =	_m === 0	? '' :
					_m < 10		? '0' + _m :
									_m + '';
			
			_x = _h <= 13 ? _h : _h - 12; 
			
			_val =	_m	? _x + ':' + _m :
								      _x;
						
			_val +=	_h< 12 ?	' AM' :
								' PM';
	}
	return _val;
}

function getFormattedDay() {
	getTheTime();

	var _suffix =	thisDayOfMonth ===  1 ?	'st' :
					thisDayOfMonth === 21 ?	'st' :
					thisDayOfMonth === 31 ?	'st' :
					thisDayOfMonth ===  2 ?	'nd' :
					thisDayOfMonth === 22 ?	'nd' :
					thisDayOfMonth ===  3 ?	'rd' :
					thisDayOfMonth === 23 ?	'rd' :
											'th';

	return thisDayOfMonth + _suffix;
}

function getTimePhrase() {
	return 'It is ' + getFormattedTime() + ' on '  + thisDay + ', ' + thisMonth + ' ' + getFormattedDay() + ', ' + thisYear;
}

function getLunchPhrase( _hourMinute ) {
	getTheTime();

	var ourTime = thisTime;
	var _phrase = '';

	// for testing //
	if( _hourMinute ) {
		_hourMinute += '';

		if( _hourMinute.length === 4 ) {
			thisHour = parseInt(   _hourMinute.substr( 0, 2 ), 10 );
			thisMinute = parseInt( _hourMinute.substr( 2, 2 ), 10 );
		} else {
			thisHour = parseInt(   _hourMinute.substr( 0, 1 ), 10 );
			thisMinute = parseInt( _hourMinute.substr( 1, 2 ), 10 );
		}		
		ourTime = createTheTime( thisHour, thisMinute );
	}
	/////////////////
	

	var	lunchEnd = 1430;

	var lunchStart	=	thisDay === 'Saturday' ?	1130 :
						thisDay === 'Sunday'   ?	1130 :
													1100;

	var nextDayLunchStart =
						thisDay === 'Friday'	?	1130 :
						thisDay === 'Saturday'	?	1130 :
													1100;
	
	var lunchHasStarted = true;
	if( ourTime < lunchStart ) {
		lunchHasStarted = false;
	}
	var lunchHasNotStarted = true;
	if( lunchHasStarted ) { lunchHasNotStarted = false; }


	var lunchHasEnded = false;
	if( ourTime > lunchEnd ) {
		lunchHasEnded = true;
	}
	var lunchHasNotEnded = true;
	if( lunchHasEnded ) { lunchHasNotEnded = false; }


	var lunchIsInProgress = false;
	if( lunchHasStarted && lunchHasNotEnded ) { lunchIsInProgress = true; }


	if( lunchHasNotStarted ) {
		_phrase = 'We serve lunch today from ' + getFormattedTime( '12', lunchStart ) + ' to ' + getFormattedTime( '12', lunchEnd );
	}
	if( lunchIsInProgress  ) {
		_phrase = 'We are serving lunch today until ' + getFormattedTime( '12', lunchEnd );
		}
	if( lunchHasEnded      ) {
		_phrase = 'We serve lunch tomorrow at ' + getFormattedTime( '12', nextDayLunchStart );
	}
	
	return _phrase;
}




function messageControl() {
	if( showMessage ) {
			$( 'messageLayer' ).cover();
			//mainLayerIMG. src="./pix/frame1ScIcMa.jpg"; 
			$( 'guiButtonLayer' ).uncover();

			cycleMenuBackground( "gSaturationBTN" );
	}
}




function Prep() {
	if( BrowserDetect.browser !== 'Explorer' ) {
		try {
			var tmp = $( 'Flying_Tiger_Chinese' ).SetVariable;
			if( !tmp ) {
				flashIsInstalled = false;
			}
		} catch( error ) {
			//alert( error );
		}
	}

	
	
	
	if( flashIsInstalled ) {
	
		// - // write the Header Layer (the top  banner)
		// http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701
		// http://blog.deconcept.com/swfobject/
		var so = new SWFObject( "./pix/wave11.swf", "Flying_Tiger_Banner", "600", "90", "8", "#FFFFFF", "best" );
		so.addParam( "swliveconnect", "true" ); 
		so.addParam( "wmode", "transparent" );
		so.addParam( "menu", "false" );
		so.addParam( "loop", "true" );
		so.addParam( "name", "Flying_Tiger_Chinese" );
		so.write( "headerLayer" );
		$( 'headerLayer' ).uncover();


		// - // write the Welcome Layer
		var so = new SWFObject("./pix/welcome3.swf", "welcomeObject", "600", "1186", "8", "#FFFFFF", "best");
		so.addParam( "swliveconnect", "true" ); 
		so.addParam( "wmode", "transparent" );
		so.addParam( "menu", "false" );
		so.addParam( "loop", "false" );
		so.write("welcomeLayer");


		// - // handle any special messages
		if( showMessage ) {
			var so = new SWFObject( "./pix/valentines-day-specials-2009.swf", "message", "750", "330", "8", "#FFFFFF", "best" );
			so.addParam( "swliveconnect", "true" ); 
			so.addParam( "wmode", "transparent" );
			so.addParam( "menu", "false" );
			so.addParam( "loop", "false" );
			so.write( "messageLayer" );
		}

		
		// - // write the Hours Layer
		writeHoursLayer();

		
		// - // write the Phone Layer
		var so = new SWFObject( "./pix/phone.swf", "phone", "695", "270", "8", "#FFFFFF", "best" );
		so.addParam( "swliveconnect", "true" ); 
		so.addParam( "wmode", "transparent" );
		so.addParam( "menu", "false" );
		so.addParam( "loop", "false" );
		so.write( "phoneLayer" );

		
		// - // write the Tour Layer
		var galleryFile = './gallery_A1.xml';
		if( percent( 50 )) {
			if( percent( 50 )) {	galleryFile = './gallery_A2.xml';
			} else {				galleryFile = './gallery_A3.xml';
			}
		}
		var so = new SWFObject( "./viewer.swf", "tour", "750", "330", "8", "#FFFFFF", "best" );
		so.addVariable( "xmlDataPath", galleryFile ); 
		so.addParam( "swliveconnect", "true" ); 
		so.addParam( "wmode", "transparent" );
		so.addParam( "menu", "false" );
		so.addParam( "loop", "false" );
		so.write( "tourLayer" );


		// - // handle the music widget
		/*
		var so = new SWFObject( "./pix/music-" + getRandomNumber( 1,9 ) + ".swf", "music", "70", "50", "8", "#FFFFFF", "best" );
		so.addParam( "swliveconnect", "true" ); 
		so.addParam( "wmode", "transparent" );
		so.addParam( "menu", "false" );
		so.addParam( "loop", "false" );
		so.write( "musicLayer" );
		*/

	} else {
		$( 'menuBarLayer' ).update( '<span class="flashErrMsg">&nbsp; &nbsp;(Flash is required, but the plugin has crashed, is blocked or is not installed)&nbsp; &nbsp;</span>' );
	}

	
	////////////////////////////////////////
	// logic to center image on page HORZ & VERT
	////////////////////////////////////////
	obj = $( 'mainLayerIMG' );
	obj.anchorCenter();

	obj2 = $( 'mainLayer' );

	obj2.style.position = obj.style.position; // "absolute";
	//obj2.style.zIndex = obj.style.zIndex;
	
	obj2.style.top = obj.style.top // "50%";
	 obj2.style.marginTop = obj.style.marginTop;
	  obj2.style.height = obj.style.height;

	obj2.style.left = obj.style.left // "50%";
	 obj2.style.marginLeft = obj.style.marginLeft;
	  obj2.style.width = obj.style.width;

	

	//obj2.setStyle( {
	//	marginTop: '-10em'
	//});

	
	obj.uncover();

	adjustGUI();
	statusLayer( hideButtonsAsNecessary );

	$( 'menuBarLayer' ).uncover();


	// logic to display greeting messages
	////////////////////////////////////////
	if( showMessage ) { 
		$( 'messageLayer' ).uncover();
		mainLayerIMG. src="./pix/frame1SaIbMa.jpg";				// for Chinese New Year:  "./pix/frame1SaIbMa-red.jpg"; 
		$( 'guiButtonLayer' ).cover();
	}
	////////////////////////////////////////


	$( 'shadowLayer' ).uncover();
	

	// this must be set initially for the stupid
	// scriptaculous Appear effect to function!
	$( 'mControlOps2Layer' ).style.display = 'none';
	////////////////////////////////////////////
	

	setBackground();


	// exclude certain stylings from IE
	///////////////////////////////////
	if( BrowserDetect.browser !== 'Explorer' ) {
		$( 'moLayerBG' ).setStyle({ 
			width: '704px'
		});


		$( 'welcomeLayerScroller' ).setStyle({ 
			top: '62px'
		});
	}
	///////////////////////////////////
	

	// add certain stylings only for IE
	///////////////////////////////////
	if( BrowserDetect.browser === 'Explorer' ) {
		$( 'moLayerBG' ).setStyle({ 
			height: '82px',
			width: '705px'
		});
		$( 'menuLayer' ).setStyle({ 
			width: '684px'
		});
		$( 'welcomeLayer' ).setStyle({ 
			width: '684px'
		});


		$( 'menuLayerScroller' ).setStyle({ 
			top: '52px'
		});


		$( 'hoursLayer' ).setStyle({ 
			width: '709px'
		});
		$( 'phoneLayer' ).setStyle({ 
			width: '709px'
		});
		$( 'mapLayer' ).setStyle({ 
			width: '709px'
		});

		$( '_maxCost' ).setStyle({ 
			height: '22px'
		});
		$( '_menuSearch' ).setStyle({ 
			height: '22px'
		});

		$( 'sortOptionsLayer' ).setStyle({ 
			top: '7px'
		});
		$( 'priceComboboxLayer' ).setStyle({ 
			top: '7px'
		});
		$( 'menuSearchLayer' ).setStyle({ 
			top: '7px'
		});
		13
		$( 'hLite1' ).removeClassName( 'hiLite1' );
		$( 'hLite1' ).addClassName( 'hiLite1IE' );
		$( 'hLite2' ).removeClassName( 'hiLite2' );
		$( 'hLite2' ).addClassName( 'hiLite2IE' );
		$( 'hLite3' ).removeClassName( 'hiLite3' );
		$( 'hLite3' ).addClassName( 'hiLite3IE' );

		$( 'menuControlBTN' ).removeClassName( 'menuControl' );
		$( 'menuControlBTN' ).addClassName( 'menuControlIE' );

		$( 'infoBTN1' ).removeClassName( 'iButton' );
		$( 'infoBTN1' ).addClassName( 'iButtonIE' );
		$( 'infoBTN2' ).removeClassName( 'iButton' );
		$( 'infoBTN2' ).addClassName( 'iButtonIE' );
		$( 'infoBTN3' ).removeClassName( 'iButton' );
		$( 'infoBTN3' ).addClassName( 'iButtonIE' );
	}
	///////////////////////////////////



	// intialize selected menu choices
	//////////////////////////////////
	setButton( '_showBeef'       );
	setButton( '_showChicken'    );
	setButton( '_showPork'       );
	setButton( '_showShrimp'     );
	setButton( '_showVeggies'    );
	setButton( '_showChowMein'   );
	setButton( '_showLoMein'     );
	setButton( '_showAppetizers' );
	setButton( '_showDesserts'   );
	setButton( '_showMild'       );
	setButton( '_showSpicy'      );
	setButton( '_showGroup'      );
	//////////////////////////////////



	// initial GUI housekeeping
	///////////////////////////
	$( 'itemCountLayer' ).cover();

	$( 'selectMenuBTN'  ).cover();
	$( 'clearMenuBTN'   ).cover();

	$( 'handle1' ).addClassName( 'handleEnabled' );
	$( 'handle2' ).addClassName( 'handleEnabled' );

	$( 'dragLayer' ).setOpacity( 0.3 );
	$( 'dragLayer' ).uncover();

	$( 'cr1' ).setOpacity( 0.9 );
	$( 'cr2' ).setOpacity( 0.8 );
	$( 'cr3' ).setOpacity( 0.1 );
	$( 'cr3' ).uncover();

	writeInfoLayer();

	getTheTime();
	if( thisTime > 1435 ) {
		refreshButtonControl( 'dinner', true );
		setButtonChoice( 'dinnerMenuBTN' );
	} else {
		refreshButtonControl( 'lunch', true );		//have menu ready to display
		setButtonChoice( 'lunchMenuBTN' );
	}
		
	//writeMapLayer();								//have map ready to view
	///////////////////////////

	$( 'dataLayer2' ).cover();
	$( 'dataLayer3' ).cover();
	$( 'dataLayer4' ).cover();
	$( 'infoBTN2' ).cover();
	$( 'infoBTN3' ).cover();
	$( 'infoBTN4' ).cover();
	
	var CNY = '';
	CNY = getChineseNewYearAnimal();
	if( CNY ) {
		showChineseNewYear( CNY );
		$( 'infoBTN1' ).uncover();
	} else {
		showInfoLayer();
	}
	
	attachEvents();
	
	new Draggable( $( 'mainLayer' ), { starteffect: null, endeffect: AE0c, handle: 'dragLayer' });
	hideDragBar();

	new PeriodicalExecuter( updateHoursMessage, 120 );	// seconds

	updateCopyrightLine();

	startMenuIndex = getURLParms( 'start' );
	if( startMenuIndex ) {
		startMenuIndex = startMenuIndex.toLowerCase();
		
		switch( startMenuIndex ) {
			case 'welcome':
				_gaq.push(['_trackEvent', 'events', 'intial page', 'welcome']);

				doMenu( startMenuIndex );
				break;

			case 'menu':
				_gaq.push(['_trackEvent', 'events', 'intial page', 'menu']);

				doMenu( startMenuIndex );
				break;

			case 'hours':
				_gaq.push(['_trackEvent', 'events', 'intial page', 'hours']);

				doMenu( startMenuIndex );
				break;

			case 'phone':
				_gaq.push(['_trackEvent', 'events', 'intial page', 'phone']);

				doMenu( startMenuIndex );	
				break;

			case 'map':
				_gaq.push(['_trackEvent', 'events', 'intial page', 'map']);

				doMenu( startMenuIndex );
				break;

			case 'tour':
				_gaq.push(['_trackEvent', 'events', 'intial page', 'tour']);

				doMenu( startMenuIndex );

		}
	}
}




function attachEvents() {
	Event.observe( 'dragLayer', 'mouseover',	AE0a );
	Event.observe( 'dragLayer', 'mouseout',		AE0b );
	
	Event.observe( 'infoBTN1', 'click', AE1 );
	Event.observe( 'infoBTN2', 'click', AE2 );
	Event.observe( 'infoBTN3', 'click', AE3 );
	Event.observe( 'infoBTN4', 'click', AE4 );

	Event.observe( 'menuControlBTN', 'click', AE5 );

	Event.observe( 'lunchMenuBTN', 'click',			AE6a );
	Event.observe( 'lunchMenuBTN', 'mouseover',		AE6b );
	
	Event.observe( 'dinnerMenuBTN', 'click',		AE7a );
	Event.observe( 'dinnerMenuBTN', 'mouseover',	AE6b );

	Event.observe( 'selectMenuBTN', 'click',		AE8a );
	Event.observe( 'selectMenuBTN', 'mouseover',	AE6b );
	
	Event.observe( 'clearMenuBTN', 'click',			AE9a );
	Event.observe( 'clearMenuBTN', 'mouseover',		AE6b );

	Event.observe( 'printMenuBTN', 'click',			AE10a );
	Event.observe( 'printMenuBTN', 'mouseover',		AE6b );

	Event.observe( 'resetMenuBTN', 'click',			AE11a );
	Event.observe( 'resetMenuBTN', 'mouseover',		AE11b );
	Event.observe( 'resetMenuBTN', 'mouseout',		AE11c );

	Event.observe( '_showBeef',		'click', AE12 );
	Event.observe( '_showChicken',	'click', AE13 );
	Event.observe( '_showDuck',		'click', AE14 );
	Event.observe( '_showPork',		'click', AE15 );
	Event.observe( '_showShrimp',	'click', AE16 );
	Event.observe( '_showVeggies',	'click', AE17 );
	Event.observe( '_showChowMein',	'click', AE18 );
	Event.observe( '_showLoMein',	'click', AE19 );

	Event.observe( '_showFriedRice',	'click', AE20 );
	Event.observe( '_showEggFooYoung',	'click', AE21 );
	Event.observe( '_showSoup',			'click', AE22 );
	Event.observe( '_showAppetizers',	'click', AE23 );
	Event.observe( '_showDesserts',		'click', AE24 );
	Event.observe( '_showChef',			'click', AE25 );

	Event.observe( 'sortOrder',	'change',	AE26a );
	Event.observe( 'sortOrder',	'focus',	AE26b );
	Event.observe( 'sortOrder',	'blur',		AE26c );

	Event.observe( '_maxCost',	'focus',	AE27a );
	Event.observe( '_maxCost',	'blur',		AE27b );

	Event.observe( 'sortPrice',	'change',	AE28a );
	Event.observe( 'sortPrice',	'focus',	AE28b );
	Event.observe( 'sortPrice',	'blur',		AE28c );

	Event.observe( '_menuSearch',	'focus',	AE29a );
	Event.observe( '_menuSearch',	'blur',		AE29b );

	Event.observe( '_showHouse', 'click', AE30 );

	Event.observe( '_showSpicy', 'click', AE31 );
	Event.observe( '_showMild',  'click', AE32 );

	Event.observe( '_showGroup', 'click', AE33 );

	Event.observe( 'gResetBTN',			'click', AE34 );
	Event.observe( 'gSharpnessBTN',		'click', AE35 );
	Event.observe( 'gGammaBTN',			'click', AE36 );
	Event.observe( 'gSaturationBTN',	'click', AE37 );

	Event.observe( 'googleMan',	'click', AE38 );

	Event.observe( 'ytBTN',	'click', AE39 );

	Event.observe( 'emailLink',	'click',		AE40a );
	Event.observe( 'emailLink',	'mouseover',	AE40b );
}




function AE0a() {
	_gaq.push(['_trackEvent', 'controls', 'drag layer', 'hover']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/DRAGLayerHover'); }
	$( 'dragLayer' ).setOpacity( 1 );
	//alert( 'TOP: ' + $( 'mainLayer' ).getTop() + '\nLEFT: ' + $( 'mainLayer' ).getLeft() );
	// 238, 462


}
function AE0b() {
	_gaq.push(['_trackEvent', 'controls', 'drag layer', 'hover off']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/DRAGLayerHoverOff'); }
	$( 'dragLayer' ).setOpacity( 0.4 );
}
function AE0c() {
	_gaq.push(['_trackEvent', 'controls', 'drag layer', 'dragged']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/DRAGLayerWasDragged'); }
}
function AE1() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Restaurant Info']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNRestaurantInfo'); }
	showInfoButtons();
}
function AE2() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Preparation']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNPreparation'); }
	showData(2);
}
function AE3() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Allergies']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNAllergies'); }
	showData(3);
}
function AE4() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Extras']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNExtras'); }
	showData(4);
}
function AE5() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Menu Control']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNmenuControl'); }
	toggleMenuElements();
}
function AE6a() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Lunch']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNlunch'); }
	setButtonChoice( this.id );
	refreshMenuControl( 'lunch' );
}
function AE6b() {
	fadeLayerUp();
}
function AE7a() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Dinner']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNdinner'); }
	setButtonChoice( this.id );
	refreshMenuControl( 'dinner' );
}
function AE8a() {
	if( getSelections().length ) {
		_gaq.push(['_trackEvent', 'controls', 'buttons', 'View Selections']);
		// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNviewSelections'); }
		selectMenuControl();
	}
}
function AE9a() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Clear Selections']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNclearSelections'); }
	clearMenu();
}
function AE10a() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Print Menu']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNprintMenu'); }
	zPrint( menuIFrame );
}
function AE11a() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Reset Choices']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNresetMenu'); }
	resetButtonControl();
}
function AE11b() {
	resetButtonHover( menuState );
	fadeLayerUp();
}
function AE11c() {
	resetButtonHoverOut( menuState );
}
function AE12() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Beef checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBbeef'); }
	setButton( this.id, true );
}
function AE13() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Chicken checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBchicken'); }
	setButton( this.id, true );
}
function AE14() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Duck checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBduck'); }
	setButton( this.id, true );
}
function AE15() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Pork checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBpork'); }
	setButton( this.id, true );
}
function AE16() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Seafood checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBseafood'); }
	setButton( this.id, true );
}
function AE17() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Vegetarian checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBveggies'); }
	setButton( this.id, true );
}
function AE18() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Chow Mein checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBchowmein'); }
	setButton( this.id, true );
}
function AE19() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Lo Main checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBlomein'); }
	setButton( this.id, true );
}
function AE20() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Fried Rice checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBfriedrice'); }
	setButton( this.id, true );
}
function AE21() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Egg Foo Young checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBeggfooyoung'); }
	setButton( this.id, true );
}
function AE22() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Soup checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBsoup'); }
	setButton( this.id, true );
}
function AE23() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Appetizer checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBappetizer'); }
	setButton( this.id, true );
}
function AE24() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Dessert checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBdessert'); }
	setButton( this.id, true );
}
function AE25() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Chefs Specialities checkbox']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBchef'); }
	setButton( this.id, true );
}
function AE26a() {
	var _tmp = '/ControlSort_';
	var _select = $( 'sortOrder' );
	if( _select.options.length > 0) {
		_tmp += isChecked( '_showGroup' ) ? 'dish-' : '';
		_tmp += _select.options[_select.selectedIndex].value;
	}
	
	_gaq.push(['_trackEvent', 'controls', 'sort', _tmp]);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview( _tmp ); }
	refreshButtonControl( meal );
}
function AE26b() {
	setControlFocus( this.id )
}
function AE26c() {
	removeControlFocus();
}
function AE27a() {
	setControlFocus( this.id );
}
function AE27b() {
	removeControlFocus( this.id );
}
function AE28a() {
	var _tmp = this.value;

	_gaq.push(['_trackEvent', 'controls', 'price', _tmp]);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview( '/ControlPrice_' + _tmp ); }

	setPriceRange( this.value );
	$( _maxCost ).value = this.value;
	refreshButtonControl( meal );
}
function AE28b() {
	setControlFocus( this.id );
}
function AE28c() {
	removeControlFocus();
}
function AE29a() {
	setControlFocus( this.id );
}
function AE29b() {
	removeControlFocus();
}
function AE30() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'House Dinners']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBhouse'); }
	setButton( this.id, true );
}
function AE31() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Spicy']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBspicy'); }
	setButton( this.id, true );
}
function AE32() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Mild']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBmild'); }
	setButton( this.id, true );
}
function AE33() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Group Dishes Together']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/CBgroup'); }
	setButton( this.id, true );
}
function AE34() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'guiReset']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNguiReset'); }
	cycleMenuBackground( this.id );
}
function AE35() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'guiSharpness']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNguiSharpness'); }
	cycleMenuBackground( this.id );
}
function AE36() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'guiIntensity']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNguiIntensity'); }
	cycleMenuBackground( this.id );
}
function AE37() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'guiTranslucence']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNguiTranslucence'); }
	cycleMenuBackground( this.id );
}
function AE38() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'Google Street View']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNGoogleMan'); }
	toggleStreetView();
}
function AE39() {
	_gaq.push(['_trackEvent', 'controls', 'buttons', 'close foo bar']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNCloseFooBar'); }
	fooBar();
}
function AE40a() {
	_gaq.push(['_trackEvent', 'controls', 'links', 'email developer click']);
	// if( FlashTrackingIsEnabled ) { pageTracker._trackPageview('/BTNEmailAuthor'); }
	this.href = revealEmailAddress( this.href );
}
function AE40b() {
	_gaq.push(['_trackEvent', 'controls', 'links', 'email developer hover']);
}




function getURLParms( _parmName ) {
	name = _parmName.replace( /[\[]/,"\\\[").replace(/[\]]/,"\\\]" );
	var regexS = "[\\?&]" + _parmName + "=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( !results ) {		// TRUE if null or undefined
		return '';
	} else {
		return results[1];
	}
}




function updateCopyrightLine() {
	$( 'copyRightBox' ).update( 'Copyright &copy; 2007 - ' + thisYear );
}




function getChineseNewYearAnimal() {
// http://en.wikipedia.org/wiki/Chinese_New_Year
// http://www.time&&date.com/date/dateadd.html
	
	getTheTime();
	//thisYear = 2012; thisMonth = 'January'; thisDayOfMonth = 27;

	var CNYanimal = '';
	
	switch( thisYear ) {
		case 2012:
			// 23 jan - 7 feb
			if(( thisMonth === 'January' && thisDayOfMonth > 22 ) || ( thisMonth === 'February' && thisDayOfMonth < 8 )) {
				CNYanimal = 'Dragon';
			}
			break;
	
		case 2013:
			// 10 feb - 25 feb
			if( thisMonth === 'February' && thisDayOfMonth > 9 && thisDayOfMonth < 26 ) {
				CNYanimal = 'Snake';
			}
			break;
	
		case 2014:
			// 31 jan - 15 feb
			if(( thisMonth === 'January' && thisDayOfMonth === 31 ) || ( thisMonth === 'February' && thisDayOfMonth < 16 )) {
				CNYanimal = 'Horse';
			}
			break;
	
		case 2015:
			// 19 feb - 6 mar 
			if(( thisMonth === 'February' && thisDayOfMonth > 18 ) || ( thisMonth === 'March' && thisDayOfMonth < 7 )) {
				CNYanimal = 'Sheep';
			}
			break;
	
		case 2016:
			// 8 feb - 23 feb
			if(( thisMonth === 'February' && thisDayOfMonth > 7 ) || ( thisMonth === 'February' && thisDayOfMonth < 24 )) {
				CNYanimal = 'Monkey';
			}
			break;

		case 2017:
			// 28 jan - 12 feb
			if(( thisMonth === 'January' && thisDayOfMonth > 27 ) || ( thisMonth === 'February' && thisDayOfMonth < 13 )) {
				CNYanimal = 'Rooster';
			}
			break;
	
		case 2018:
			// 16 feb - 3 mar
			if(( thisMonth === 'February' && thisDayOfMonth > 15 ) || ( thisMonth === 'March' && thisDayOfMonth < 4 )) {
				CNYanimal = 'Dog';
			}
			break;
			
		case 2019:
			// 5 feb - 20 feb
			if( thisMonth === 'February' && thisDayOfMonth > 4 && thisDayOfMonth < 21 ) {
				CNYanimal = 'Pig';
			}
	}

	return CNYanimal;
}




function showChineseNewYear( _animule ) {
	chineseNewYear = true;

	$( 'CNYanimal' ).update( 'The Year of ' + _animule );
	$( 'CNY' ).uncover();
}




function checkChineseNewYear() {
	if( chineseNewYear ) { $( 'CNY' ).cover(); }
}



// this is called locally, and from the iframe menu page when an item is "highlighted"
//////////////////////////////////////////////////////////////////////////////////////
function statusLayer( _hideButtons ) {
	var selections = parseInt( $( 'total_qty' ).innerHTML, 10 );
	
	$( 'statusLayerText' ).update( ' selection costs $' );
	if( selections !== 0 ) {
		if( selections > 1 ) { $( 'statusLayerText' ).update( ' selections cost $' ); }
		$( 'statusLayer' ).uncover();
	
		// unhide the menu selection contol buttons (opacity must be reset, in case it was previously faded out)
		$( 'clearMenuBTN' ).setOpacity( 1.0 );
		$( 'clearMenuBTN' ).uncover();
		$( 'selectMenuBTN' ).setOpacity( 1.0 );
		$( 'selectMenuBTN' ).uncover();

		//alert( $( 'id_list' ).innerHTML );

	} else {
		$( 'statusLayer' ).cover();

		if( _hideButtons ) {
			$( 'clearMenuBTN' ).cover();
			$( 'selectMenuBTN' ).cover();
		}
	}
}




// this is called locally, and from the iframe menu page
// the iframe menu page "pushes" the menu count data here
/////////////////////////////////////////////////////////
function itemCount(){
	var txt = '';
	var s0 = '';
	var s2 = '';
	var s1 = ' items';

	var mealCount   = parseInt( $( 'itemCount' ).innerHTML, 10 );
	var selectCount = parseInt( $( 'total_qty' ).innerHTML, 10 );
	
	if( updateTheItemCount ) {
	
		if( mealCount === selectCount ) {
			//s0 = '(';  s2 = ')';
		}
		
		if( mealCount === 1 ) { s1 = ' item'; }

		if( mealCount !== 0 ) {
			txt = ( meal === "lunch" ? 'Lunch: ' : 'Dinner: ' );
		
			txt+= s0 + mealCount + s1 + s2;
			
			
			if(minCost !== defaultMinCost || maxCost !== defaultMaxCost ) {
				txt+=	' ($'
						+ ( minCost === maxCost ? dollarFormat( minCost ) : dollarFormat( minCost ) + ' to $' + dollarFormat( maxCost ) )
						+ ')';
			}			
			
			$( 'itemCountText' ).update( txt );
			
			if( isVisible( 'menuLayer' )) { $( 'itemCountLayer' ).uncover(); }
		
		} else {
			$( 'itemCountLayer' ).cover();
		}
	}
}




function hideInfoLayer() {
	$( 'infoLayer' ).cover();
	$( 'dataLayer1' ).cover();
	$( 'dataLayer2' ).cover();
	$( 'dataLayer3' ).cover();
	$( 'dataLayer4' ).cover();
	$( 'infoBTN1' ).cover();
	$( 'infoBTN2' ).cover();
	$( 'infoBTN3' ).cover();
	$( 'infoBTN4' ).cover();
}
function showInfoLayer() {
	$( 'infoLayer' ).uncover();
	$( 'dataLayer1' ).uncover();
	$( 'dataLayer2' ).cover();
	$( 'dataLayer3' ).cover();
	$( 'dataLayer4' ).cover();
	$( 'infoBTN1' ).uncover();
	$( 'infoBTN2' ).cover();
	$( 'infoBTN3' ).cover();
	$( 'infoBTN4' ).cover();
}




function hideDragBar() {
	$( 'dragLayer' ).cover();
}
function showDragBar() {
	$( 'dragLayer' ).uncover();
}




function showData( _layer ) {
	var obj = $( 'dataLayer' + _layer );
	
	if( isInvisible( obj )) {
	
		switch( _layer ) {
			case 1:
				$( 'dataLayer2' ).cover(); $( 'dataLayer3' ).cover(); $( 'dataLayer4' ).cover();
				break;

			case 2:
				$( 'dataLayer1' ).cover(); $( 'dataLayer3' ).cover(); $( 'dataLayer4' ).cover();
				break;

			case 3:
				$( 'dataLayer1' ).cover(); $( 'dataLayer2' ).cover(); $( 'dataLayer4' ).cover();
				break;

			case 4:
				$( 'dataLayer1' ).cover(); $( 'dataLayer2' ).cover(); $( 'dataLayer3' ).cover();
		}

		obj.setOpacity( 0 );
		obj.uncover();
		new Effect.Opacity( obj, { from: 0.0, to: 1, duration: 1 });
	}
}




function showInfoButtons() {
	if( chineseNewYear ) {
		$( 'CNY' ).cover();
		
		$( 'infoLayer' ).uncover();
		//$( 'dataLayer1' ).uncover();
		$( 'dataLayer2' ).cover();
		$( 'dataLayer3' ).cover();
		$( 'dataLayer4' ).cover();
		$( 'infoBTN1' ).uncover();
		$( 'infoBTN2' ).cover();
		$( 'infoBTN3' ).cover();
		$( 'infoBTN4' ).cover();
	}
		
	$( 'infoBTN1' ).cover();
	$( 'infoBTN2' ).uncover();
	$( 'infoBTN3' ).uncover();
	$( 'infoBTN4' ).uncover();
	
	//new Effect.Opacity( $( 'dataLayer1' ), { from: 1.0, to: 0.5, duration: 1 });
	showData( 2 );
}




function convertStrToNum( _in ) {
	var _num = 0;
	for( var x = 0; x < _in.length; x++ ) {
		_num += _in.charCodeAt( x );
	}
	return _num;
}




// respond to the LUNCH or DINNER buttons by highlighting the button color (toggle)
function setButtonChoice( _menuButton ) {
	$( _menuButton ).addClassName( 'activeMenu' );
	
	switch( _menuButton ) {
		case 'lunchMenuBTN':
			$( 'dinnerMenuBTN'	).removeClassName( 'activeMenu' );
			break;
	
		case 'dinnerMenuBTN':
			$( 'lunchMenuBTN'	).removeClassName( 'activeMenu' );
	}
}




/////////////////////////////
// Clear Selections button //
/////////////////////////////
function clearMenu() {									
	gb_weJustViewedSelections = false;
	
	// initialize data
	$( 'total_qty' ).innerHTML = 0;
	$( 'total_cost' ).innerHTML = 0.00;
	$( 'id_list' ).innerHTML = '';
	//////////////////

	menuSearchTxt = 'nada';
	if( $(_menuSearch).value.length ) {
		menuSearchTxt = $(_menuSearch).value;
	}
	
	refreshMenu( meal );

	// fade both buttons to full transparency, then set visibility to 'hidden' to prevent them being interacted with
	var obj = $( 'clearMenuBTN' );
	new Effect.Opacity( obj, { from: 1.0, to: 0.0, duration: 0.9, afterFinish: function( effect ) { effect.element.cover(); } });

	var obj = $( 'selectMenuBTN' );
	new Effect.Opacity( obj, { from: 1.0, to: 0.0, duration: 0.9, afterFinish: function( effect ) { effect.element.cover(); } });
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	statusLayer( doNotHideButtons );
	fadeLayerDown();
}




function zPrint( _target ) {							// Print button
// prints the menu (iframe) window contents
	_target.focus();
	_target.print();
}




function refreshButtonControl( _in, _fadeLayer ) {		// Update menu button
	// handle easter eggs...
	var _k = 'imelatog xw a lsni ve  aia onl os wtlfnwurpl ee  t  eih efeooixntth sitc';
	
	if( _dBugKeyBuffer === 905
		&&
		convertStrToNum( $( '_menuSearch' ).value ) === parseInt( _unShuffleData( 'netnytuunel,gcbtpolmrfcau)4 drnc"n oekelxaayrphp dui5mer" wsn3>i.tk tyl t <uel ntbi  oooCfaa cft ahoys   donl  t ati ey e te nh,vrof tfeu(n  ti et hpfhIot, sareseu', _k ), 10 )
	) {
		footBar( 1 );
	}
	
	
	if( _dBugKeyBuffer === 1819
		&&
		convertStrToNum( $( '_menuSearch' ).value ) === parseInt( _unShuffleData( 'un" cl abt, eicytnbeut  ha)6sockfeIc e elnaa fp w du 1mer"e sa5gl.tk tl(un <ool >ryis ooyCo   nodma rns   teulurtepxideytt ttnnh,vr fttfep n etif nthpfh7ou,yaarhieo', _k ), 10 )
	) {
		footBar( 2 );
	}
	////////////////////////	


	gb_weJustViewedSelections = false;
	
	MenuHelpIsActive=false;
	adjustGUI();

	menuSearchTxt = 'nada';
	if( $(_menuSearch).value.length ) {
		menuSearchTxt = $( _menuSearch ).value;
	}

	setPriceRange( $( _maxCost ).value );
	refreshMenu( _in );

	if( _fadeLayer ) { fadeLayerDown(); }
}




function refreshMenuControl( _in ) {					// Lunch / Dinner buttons
	gb_weJustViewedSelections = false;
	
	menuSearchTxt = 'nada';
	if( $(_menuSearch).value.length ) {
		menuSearchTxt = $(_menuSearch).value;
	}

	setPriceRange( $( _maxCost ).value );
	refreshMenu( _in );
}

// updates the menu display to show checkbox categories, along with any selected menu items
function refreshMenu( _in ) {			
	updateTheItemCount = true;
	
	meal = _in;

	var menuSort;
	var select = $( 'sortOrder' );
	if( select.options.length > 0) {
		menuSort = '/' + ( isChecked( '_showGroup' ) ? 'dish-' : '' );
		menuSort += select.options[select.selectedIndex].value;
	}

	switch( select.selectedIndex ) {
		case 1:
			menuOrder = '/a';
			break;
		
		case 2:
			menuOrder = '/d';
			break;

		default:
			menuOrder = '/a';
	}




	// ** headlines are set by default in the menu.php file **
	
	if( meal === 'lunch'  )	{ var headline = '/lunch';  }
	if( meal === 'dinner' )	{ var headline = '/dinner'; }

	var parms = '/_meal' + '/' + meal + '/_headline' + headline + getSelections();
	
	parms += ( isChecked( '_showBeef' )			? '/_showBeef/1' : '' );
	parms += ( isChecked( '_showChicken' )		? '/_showChicken/1'		: '' );
	parms += ( isChecked( '_showDuck' )			? '/_showDuck/1'		: '' );
	parms += ( isChecked( '_showPork' )			? '/_showPork/1'		: '' );
	parms += ( isChecked( '_showShrimp' )		? '/_showShrimp/1'		: '' );
	parms += ( isChecked( '_showVeggies' )		? '/_showVeggies/1'		: '' );
	parms += ( isChecked( '_showChowMein' )		? '/_showChowMein/1'	: '' );
	parms += ( isChecked( '_showLoMein' )		? '/_showLoMein/1'		: '' );
	parms += ( isChecked( '_showFriedRice' )	? '/_showFriedRice/1'	: '' );
	parms += ( isChecked( '_showEggFooYoung' )	? '/_showEggFooYoung/1'	: '' );
	parms += ( isChecked( '_showSoup' )			? '/_showSoup/1'		: '' );
	parms += ( isChecked( '_showAppetizers' )	? '/_showAppetizers/1'	: '' );
	parms += ( isChecked( '_showDesserts' )		? '/_showDesserts/1'	: '' );
	parms += ( isChecked( '_showChef' )			? '/_showChef/1'		: '' );
	parms += ( isChecked( '_showHouse' )		? '/_showHouse/1'		: '' );
	parms += ( isChecked( '_showSpicy' )		? '/_showSpicy/1'		: '' );
	parms += ( isChecked( '_showMild' ) 		? '/_showMild/1'		: '' );

	parms += "/_menuSort" + menuSort + "/_menuOrder" + menuOrder;
	
	if( menuSearchTxt.length ) {
		parms += "/_menuFind" + "/" + menuSearchTxt;
	} else {
		parms += "/_menuFind" + "/nada";
	}

	parms += "/_menuCost" + "/" + minCost + "-" + maxCost + costMode;
	//alert( parms );

	if ( _dBug ) { parms = "/debug/1" + parms; alert( parms ); }  
	
	///////////////////////////////////////////////////////////////////////

	writeMenuLayer( parms );
}




function selectMenuControl() {		// View Selections button
	gb_weJustViewedSelections = true;
	
	menuSearchTxt = 'nada';
	selectMenu();
}

function selectMenu() {				
	updateTheItemCount = false;
	
	var headline, parms;
	
	var menuSort;
	var select = document.getElementById("sortOrder");
	if( select.options.length > 0) {
		menuSort = '/' + ( isChecked( '_showGroup' ) ? 'dish-' : '' );
		menuSort += select.options[select.selectedIndex].value;
	}

	switch( select.selectedIndex ) {
		case 1:
	    	menuOrder = '/a';
			break;
		case 2:
	    	menuOrder = '/d';
			break;

		default: 
	    	menuOrder = '/a';
	}


	var _test = $( 'total_qty' ).innerHTML;  // have any items been selected?
	
	if( _dBug ) { alert( '_test ( ' + _test + ' ) \n' + 'MenuHelpIsActive ( ' + MenuHelpIsActive + ' ) \n' + '_meal  ( ' + meal + ' )\n Selections: ' + getSelections() ); }

	if( _test != 0 ) {
		/////////////////////////////////////
		// prebuilt css styles exist in the menu.php rendered page,
		// useful for standard headings, i.e. H6, H5, H4, H3, H2, and H1
		// (H1 is the largest)
		// e.g., insert '<h2>' in the _headline string
		// g1 - g6 also available (they are non-bold versions of h1-h6)
		// s6 is a small (10 px) font size
		/////////////////////////////////////
		var _v1 = ( $( 'total_qty' ).innerHTML === '1' ) ? '1 item,&nbsp;$' : $( 'total_qty' ).innerHTML + ' items,&nbsp;$';
		
		// total cost
		var _v2 = $( 'total_cost' ).innerHTML;
		_v2 = dollarFormat( _v2 );
		
		// total cost add sales tax no tips
		var _v3 = addSalesTax( _v2 );
		_v3 = dollarFormat( _v3 );
		
		// add 20% gratuity on meal without sales tax, then add sales tax (voluntary tips are not taxable)
		var _v4 = addGratuity( _v2, 20 );
		_v4 = addSalesTax( _v4 );
		_v4 = dollarFormat( _v4 );

		headline = '/' + urlAutoEncode(	dTextDefault + '<br /><g1>' + motto + '</g1><br />' +
			'<g6>' + _v1 + _v2 + ' total,&nbsp;or $' + _v3 + ' when dining in ($' + _v4 + ' @ 20% gratuity)<br />' +
			'Call us now at <gy>' + telephoneNumber + '</gy> to place a takeout order</g6><br />' +
			dClose );

		//headline = '/select';

		parms = '/_meal' + '/' + meal + '/_headline' + headline + getSelections();
		parms += "/_menuSort" + menuSort + "/_menuOrder" + menuOrder; 

		if( menuSearchTxt.length ) {
			parms += "/_menuFind" + "/" + menuSearchTxt;
		} else {
			parms += "/_menuFind" + "/nada";
		}

		parms += "/_menuCost" + "/" + minCost + "-" + maxCost + costMode;

		//alert( parms );


		if ( _dBug ) { parms = "/debug/1" + parms; alert( parms ); }  

		///////////////////////////////////////////////////////////////////////

		writeMenuLayer( parms );

	} else {

		if( !MenuHelpIsActive ) {

			MenuHelpIsActive = true; adjustGUI();
		
			//_meal = 'none'; //cannot be blank!!
		
			//var pStyle = pStyleDefault;  // default centered text for entire PARAGRAPH
			
			headline = '/' +
				urlAutoEncode( dTextCenter + 
				'<br /><h3>Nothing is selected!</h3>' + dClose + 
				dTextJustify + '<br /><span style=\'color: brown;\'><g5><b>You have not selected</b> any menu items yet, ' +
				'and we have over 100 dishes to choose from! Customize the display to show only your selections ' + 
				'by clicking on items in the menu. A selected item is shown <span style=\'background-color: yellow;\'>highlighted</span>. ' +
				'<br /><br /><b>When you&rsquo;re finished choosing</b>, click the <span style=\'color: black;\'><button class=\'helpBTN\'>View Selections</button></span> button to see the list you&rsquo;ve made. This group of personal ' +
				'selections is like having your own custom menu, and is useful for comparing individual dishes, figuring ' +
				'the cost of a group of meals, or for printing as a phone order. Now, click the <span style=\'color: black;\'><button class=\'helpBTN\' onClick=\'window.parent.refreshButtonControl();\'>Update Menu</button></span> button to get started.</g5></span>' + dClose );
		
			headline = '/select';
			
			parms = '/_meal/' + meal + '/_headline' + headline;
		
			if( menuSearchTxt.length ) {
				parms += "/_menuFind" + "/" + menuSearchTxt;
			} else {
				parms += "/_menuFind" + "/nada";
			}

			parms += "/_menuCost" + "/" + minCost + "-" + maxCost + costMode;

			if ( _dBug ) { parms = "/debug/1" + parms; alert( parms ); }  

			///////////////////////////////////////////////////////////////////////
			
			writeMenuLayer( parms );
		}
	}
}




function writeMenuLayer( _parms ) {
	// see	http://www.nczonline.net/blog/2009/09/15/iframes-onload-and-documentdomain/
	
	// using <object> in IE caused the menu's UTF-8 text data to render corrupted
		
	
	/*
	var newHTML;
	
	if( BrowserDetect.browser === 'Explorer' ) {
		newHTML = '<iframe id="menuIFrame" class="menuObjectIE" src="./' + menuPHPfile + _parms + '" scrolling="no" frameborder="0"></iframe>';	
	} else {
		newHTML = '<iframe id="menuIFrame" onLoad="' + onLoadStr + '" class="menuObject"   src="./' + menuPHPfile + _parms + '" scrolling="no" frameborder="0"></iframe>';	
		//newHTML = '<object id="menuIFrame" class="menuObject" data="./' + menuPHPfile + _parms +  '" type="text/html"></object>';
	}

	$( 'menuLayer' ).update( newHTML );
	*/
		
	disableScroller( 'handle2' );

	var myFrame = document.createElement( "iframe" );
	myFrame.frameborder = "0";
	myFrame.marginheight = "0";
	myFrame.marginwidth = "0";
	myFrame.scrolling = "no";
	myFrame.src = './' + menuPHPfile + _parms;
	myFrame.id = "menuIFrame";
	
	myFrame.onload = myFrame.onreadystatechange = function() {
		if( this.readyState && this.readyState !== 'complete' && this.readyState !== 'loaded' ) {
			return;
		}
		
		checkSrc( myFrame.src );
		
		//alert( 'Local iframe is now loaded' );
	}

	//document.body.appendChild( myFrame );
	$( 'menuLayer' ).update( myFrame );
	
	//if( BrowserDetect.browser === 'Explorer' ) {
	//	$( 'menuIFrame' ).addClassName( 'menuObjectIE' );
	//} else {
	//	$( 'menuIFrame' ).addClassName( 'menuObject'   );
	//}
		//	applying class styling after creating the iframe caused 'style glitching' in FF
		//  where the default style would render, and a split second later the class style would be applied
}




function writeWelcomeLayer() {
}




function writeHoursLayer() {
	getTheTime();

	switch( thisDay ) {
		case 'Monday':
			var _swf = "./pix/lunchhours1a.swf";
			break;
		case 'Tuesday':
			var _swf = "./pix/lunchhours1b.swf";
			break;
		case 'Wednesday':
			var _swf = "./pix/lunchhours1c.swf";
			break;
		case 'Thursday':
			var _swf = "./pix/lunchhours1d.swf";
			break;
		case 'Friday':
			var _swf = "./pix/lunchhours2a.swf";
			break;
		case 'Saturday':
			var _swf = "./pix/lunchhours3a.swf";
			break;
		case 'Sunday':
			var _swf = "./pix/lunchhours4a.swf";

	}

	var so = new SWFObject( _swf, "lunchHoursTxt", "695", "240", "8", "#FFFFFF", "best" );
	so.addParam( "swliveconnect", "true" ); 
	so.addParam( "wmode", "transparent" );
	so.addParam( "menu", "false" );
	so.addParam( "loop", "false" );
	so.write( "hoursLayer" );
}



function writeInfoLayer() {
	var txt1 = "<div class='infoTextContent'>Welcome to \"The Tiger!\"<br/>We’ve served Greater Dayton and Wright-Patterson AFB since 1989.&nbsp; We look forward to serving you today!</div>";
	$( 'dataLayer1' ).update( txt1 );	

	var txt2 = "<div class='infoHead'>PREPARATION</div><div class='infoTextContent2'>&nbsp;&nbsp;&nbsp;&nbsp;Your meal is prepared fresh and cooked over an open stove.&nbsp; It arrives at your table extremely hot, moments after it’s done, at around 183 degrees.&nbsp; Microwave ovens are never used to prepare food.<br/>&nbsp;&nbsp;&nbsp;&nbsp;On request, any of our normally mild dishes can be prepared spicy for you; for example, Mongolian Beef.";
	$( 'dataLayer2' ).update( txt2 );	

	var txt3 = "<div class='infoHead'>ALLERGIES</div><div class='infoTextContent3'>&nbsp;&nbsp;&nbsp;&nbsp;We use all-purpose Kikkoman Soy Sauce, but can substitute with low-sodium, gluten-free La Choy Lite Soy Sauce.&nbsp; We’ll tailor any meal to suit your dietary needs; for example, no sugar, salt or MSG.&nbsp; If sensitive to shellfish, let us know and we’ll gladly prepare your meal using a fresh wok, oil and utensils.";
	$( 'dataLayer3' ).update( txt3 );	

	var txt4 = "<div class='infoHead'>EXTRAS</div><div class='infoTextContent3'>&nbsp;&nbsp;&nbsp;&nbsp;You can ask us to include extra items in your meal of course, but we may charge for them.&nbsp; Also, we don’t sell additional sauce unless it’s already an ingredient in your entrée.<br/>&nbsp;&nbsp;&nbsp;&nbsp;Please don’t confuse us with that other \"flying whatsit\" place&mdash;the one that delivers&mdash;we are dine-in and takeout only.";
	$( 'dataLayer4' ).update( txt4 );	
}




function writeMapLayer() {
	var newHTML;

	if( BrowserDetect.browser === 'Explorer' ) {
		newHTML = '<iframe id="mapIFrame" class="mapObjectIE" src="./googlemap.html" scrolling="no" frameborder="0"></iframe>';
		//newHTML = '<object id="mapIFrame" class="mapObjectIE" data="./googlemap.html" type="text/html"></object>';
	} else{
		newHTML = '<object id="mapIFrame" class="mapObject"   data="./googlemap.html" type="text/html"></object>';
	}

	$( 'mapLayer' ).update( newHTML );

	mapHasNotBeenWritten = false;
}




// reload the iframe if the source isn't kosher...
//////////////////////////////////////////////////
function checkSrc( _src ) {
	_src = _src.toLowerCase();  //alert( _src );
	                              
	//if(	_src.substring(0,17) === 'http://localhost/' 
	//		||
	//	_src.substring(0,6)  === './menu'
	//		||
	//	_src.substring(0,34) === 'http://www.flyingtigerchinese.com/'
	//		||
	//	_src.substring(0,30) === 'http://flyingtigerchinese.com/'
	//		||
	//	_src.substring(0,32) === 'http://m.flyingtigerchinese.com/'
	//) {

		if( BrowserDetect.browser === 'Explorer' ) {
			$( 'menuIFrame' ).setStyle({ 
				height: '234px',
				width: '678px'
			});
		}
		
		enableScroller( 'handle2' );

	//} else {
	//	refreshButtonControl( meal, true );
	//}
}
//////////////////////////////////////////////////




// GUI logic to simulate a disabled scrollbar control
/////////////////////////////////////////////////////
function disableScroller( _handle ) {
	if( _handle = 'handle2' ) { slider2.setDisabled(); }
	
	_handle = $( _handle );
	_handle.style.top = '0px';
	_handle.setOpacity( 0.4 );
	_handle.removeClassName( 'handleEnabled' );
}

// GUI logic to restore scrollbar functionality
///////////////////////////////////////////////
function enableScroller( _handle ) {
	var _sh = $( 'menuIFrame' ).contentWindow.document.body.scrollHeight;	
	var _oh = $( 'menuLayer'  ).offsetHeight;							
	
	//alert( 'scrollheight: ' + _sh + ', offsetheight: ' + _oh );

	if(( _sh - _oh ) > 12 ) {
		if( _handle = 'handle2' ) { slider2.setEnabled(); }

		_handle = $( _handle );
		_handle.setOpacity( 1 );
		_handle.addClassName( 'handleEnabled' );
	}
}




// get indices of selected menu items
function getSelections() {
	var _obj = $( 'id_list' );
	var _selections = _obj.innerHTML;    // values are stored in hidden container on the menu frame
	_selections = _selections.strip();   // remove whitespace for and aft
	_selections = ( ( _selections.length ) ? '/' + _selections.replace( / /g, '/2/' ) + '/2' : '' );
	return _selections;
}




function toggleMenuElements() {
	var obj1 = $( 'mControlOps1Layer' );
	var obj2 = $( 'mControlOps2Layer' );

	if( menuState === 1 ) {
		menuState = 2;
		$( 'menuControlBTN' ).update( '❖' );
		$( 'menuControlBTN' ).title=" Menu options (entrée selection) "
		obj1.hide();
		obj2.appear();

		adjustResetButton();

	} else {
		menuState = 1;
		$( 'menuControlBTN' ).update( '◆' );
		$( 'menuControlBTN' ).title=" Menu options (sorting, searching, etc.) "
		obj2.hide();
		obj1.appear();

		adjustResetButton();
	}

	fadeLayerDown();
}		




function fadeLayerDown() {
	_gaq.push(['_trackEvent', 'events', 'fade layer', 'fade down']);

	var obj = $( 'bottomRowMenuButtonLayer' );
	var opacityValue = obj.getStyle( 'opacity' );
	if( opacityValue === 1) {
		new Effect.Opacity( obj, { from: 1.0, to: 0.5, duration: 0.5 });
	}
}

function fadeLayerUp() {
	_gaq.push(['_trackEvent', 'events', 'fade layer', 'fade up']);

	var obj = $( 'bottomRowMenuButtonLayer' );
	var opacityValue = obj.getStyle( 'opacity' );
	if( opacityValue === 0.5) {
		new Effect.Opacity( obj, { from: 0.5, to: 1.0, duration: 0.1 });
	}
}





// makes a <button> useful for toggling state, same as <input type='checkbox'>
function setButton( _button, _refreshMenu ) {
	if( _button !== 'null' ) { _button = $( _button ); }

	// toggle state, allowing for no initial state
	if( _button.checked === undefined )     {
		_button.checked = false;
	}
	if(        isUnChecked( _button )) {
		_button.checked = true;
	} else if( isChecked( _button )  ) {
		_button.checked = false;
	}
	//////////////////////////////////////////////

	// adjust GUI based on state of button
	var _ih = _button.innerHTML;

	if( isChecked( _button )) { 
		_button.addClassName( 'selected' );
		_button.update( '<span class="test_span">' + '✔' + _ih + '</span>' );
		//the span class is a layout fix for Safari/webkit, which refuses
		//to re-center button text after it's been dynamically changed

		// adjust the tool tip based on button state
		switch( _ih ) {
			case 'Vegetarian':
				_ih = " Vegetarian dishes are displayed ";
				break;

			case 'Soup':
				_ih = " Soups are displayed ";
				break;

			case 'Appetizers':
				_ih = " Appetizers are displayed ";
				break;

			case 'Desserts':
				_ih = " Desserts are displayed ";
				break;

			case 'Chef’s Specialties':
				_ih = " The Chef’s Specialties are displayed ";
				break;

			case 'Mild':
				_ih = " Mild dishes are displayed ";
				break;

			case 'Spicy':
				_ih = " Spicy dishes are displayed ";
				break;

			case 'Group Dishes Together':
				_ih = " Chosen entrées are combined by category ";
				break;

			default:
				_ih =	_ih.toLowerCase();
				_ih =	_ih === 'lo mein'   ? _ih + ' noodles' :
						_ih === 'chow mein' ? _ih + ' noodles' :
															_ih;

				_ih = " Dishes containing " + _ih + " are displayed ";
		}

		_button.initTitle = _button.title;
		_button.title = _ih;
		/////////////////////////////////////////////
	}

	if( _button.checked === false ) {
		_button.removeClassName( 'selected' );

		var myregexp = /<.+>✔(.+)<.+>/i;
		var match = myregexp.exec( _ih );
		_button.update( match[1] );

		// adjust the tool tip based on button state
		_button.title = _button.initTitle;
	}
	//////////////////////////////////////

	adjustResetButton();

	if( gb_weJustViewedSelections && _button.id === '_showGroup' ) {
		selectMenuControl()
	} else if( _refreshMenu ) {
		refreshButtonControl( meal, true );
	}
}




function toggleStreetView() {
	if(	gb_googleStreetViewIsActive ) {
		gb_googleStreetViewIsActive = false;
		document.body.style.background = "url('" + gs_bGroundImg + "') white fixed no-repeat center center";
		$( 'googleManBTN' ).title = " View restaurant from the street ";
		unSquishFrame();

		if( gb_FadingIsActive ) { resumeFade(); }
	} else if( !gb_googleStreetViewIsActive ) {
		gb_googleStreetViewIsActive = true;
		document.body.style.background = "url('" + gs_streetViewImg + "') white fixed no-repeat center center";
		$( 'googleManBTN' ).title = " Return to the map ";
		squishFrame();

		if( gb_FadingIsActive ) { suspendFade(); }
	}
}

function resetStreetView() {
	gb_googleStreetViewIsActive = true;
	toggleStreetView();
}




function squishFrame() {
	$( 'menuBarLayer' ).cover();
	new Effect.Opacity( $( 'mapLayer' ), { from: 1.0, to: 0.0, duration: 0.5 });
	$( 'guiButtonLayer' ).cover();
	$( 'shadowLayer' ).cover();
	if( gb_vistaLayerIsActive ) { $( 'vistaLayer' ).cover(); }
	
	$( 'mainLayerIMG' ).cover();

	//new Effect.Scale( $( 'mainLayer' ), 8 );
}

function unSquishFrame() {
	//new Effect.Scale( $( 'mainLayer' ), 1250 );

	$( 'mainLayerIMG' ).uncover();
	if( gb_vistaLayerIsActive ) { $( 'vistaLayer' ).uncover(); }
	new Effect.Opacity( $( 'mapLayer' ), { from: 0.0, to: 1.0, duration: 0.5 });
	$( 'guiButtonLayer' ).uncover();
	$( 'shadowLayer' ).uncover();
	
	$( 'menuBarLayer' ).setOpacity( 0 ); $( 'menuBarLayer' ).uncover();
	new Effect.Opacity( $( 'menuBarLayer' ), { from: 0.0, to: 1.0, duration: 2 });
}




function resetButtonControl() {
	var _buttonStatus;

	_dBugKeyBuffer = 0;

	if( menuState === 1 ) {
		_buttonStatus = checkButtonStatus();
		switch( _buttonStatus ) {
			case 'a button is checked':
				unCheckButtons();
				break;	
		
			case 'no buttons are checked':
				checkButtons();
				break;	
			
			case 'all buttons are checked':
				unCheckButtons();
		}	

	} else {
		// reset the Sort dropdown
		$( 'sortOrder' ).selectedIndex = 1;

		// reset the Price combo-box
		$( 'sortPrice' ).selectedIndex = 0;
		$( '_maxCost' ).value = 'all';

		// reset the Search input
		$( '_menuSearch' ).value='';

		// reset the House Dinners button
		if( $( '_showHouse' ).checked === true ) { setButton( '_showHouse', false ); }
	}
		
	refreshButtonControl( meal, false );
}

function adjustResetButton() {
	var _buttonStatus;

	if( menuState === 1 ) {
	
		_buttonStatus = checkButtonStatus();
		switch( _buttonStatus ) {
			case 'a button is checked':
				$( 'resetMenuBTN' ).innerHTML = "Reset Choices";
				$( 'resetMenuBTN' ).title=" Reset current choices ";
				break;	

			case 'no buttons are checked':
				$( 'resetMenuBTN' ).innerHTML = "Select All";
				$( 'resetMenuBTN' ).title=" Choose all dishes ";
				break;	
			
			case 'all buttons are checked':
				$( 'resetMenuBTN' ).innerHTML = "Reset All";
				$( 'resetMenuBTN' ).title=" Clear all dishes ";
		}	
	} else {

		$( 'resetMenuBTN' ).innerHTML = "Reset Controls";
		$( 'resetMenuBTN' ).title=" Reset sort, search, price and house dinner controls ";
	}
}




function resetButtonHover( _menuState ) {
	if( _menuState === 1 ) {
		$( 'txtMenu2' ).addClassName( 'resetButtonHover' );
	} else {
		$( 'txtMenu3' ).addClassName( 'resetButtonHover' );
		$( 'txtMenu4' ).addClassName( 'resetButtonHover' );
		$( 'txtMenu6' ).addClassName( 'resetButtonHover' );
		$( '_showHouse' ).addClassName( 'resetHouseDinnerButtonHover' );
	}
}

function resetButtonHoverOut( _menuState ) {
	if( _menuState === 1 ) {
		$( 'txtMenu2' ).removeClassName( 'resetButtonHover' );
	} else {
		$( 'txtMenu3' ).removeClassName( 'resetButtonHover' );
		$( 'txtMenu4' ).removeClassName( 'resetButtonHover' );
		$( 'txtMenu6' ).removeClassName( 'resetButtonHover' );
		$( '_showHouse' ).removeClassName( 'resetHouseDinnerButtonHover' );
	}
}




function unCheckButtons() {
	if( isChecked( '_showBeef' ))			{ setButton( '_showBeef', false ); }
	if( isChecked( '_showChicken' ))		{ setButton( '_showChicken', false ); }
	if( isChecked( '_showDuck' ))			{ setButton( '_showDuck', false ); }
	if( isChecked( '_showPork' ))			{ setButton( '_showPork', false ); }
	if( isChecked( '_showShrimp' ))			{ setButton( '_showShrimp', false ); }
	if( isChecked( '_showVeggies' ))		{ setButton( '_showVeggies', false ); }
	if( isChecked( '_showChowMein' ))		{ setButton( '_showChowMein', false ); }
	if( isChecked( '_showLoMein' ))			{ setButton( '_showLoMein', false ); }
	if( isChecked( '_showFriedRice' ))		{ setButton( '_showFriedRice', false ); }
	if( isChecked( '_showEggFooYoung' ))	{ setButton( '_showEggFooYoung', false ); }
	if( isChecked( '_showSoup' ))			{ setButton( '_showSoup', false ); }
	if( isChecked( '_showAppetizers' ))		{ setButton( '_showAppetizers', false ); }
	if( isChecked( '_showDesserts' ))		{ setButton( '_showDesserts', false ); }
	if( isChecked( '_showChef' ))			{ setButton( '_showChef', false ); }
}

function checkButtons() {
	if( isUnChecked( '_showBeef' ))			{ setButton( '_showBeef', false ); }
	if( isUnChecked( '_showChicken' ))		{ setButton( '_showChicken', false ); }
	if( isUnChecked( '_showDuck' ))			{ setButton( '_showDuck', false ); }
	if( isUnChecked( '_showPork' ))			{ setButton( '_showPork', false ); }
	if( isUnChecked( '_showShrimp' ))		{ setButton( '_showShrimp', false ); }
	if( isUnChecked( '_showVeggies' ))		{ setButton( '_showVeggies', false ); }
	if( isUnChecked( '_showChowMein' ))		{ setButton( '_showChowMein', false ); }
	if( isUnChecked( '_showLoMein' ))		{ setButton( '_showLoMein', false ); }
	if( isUnChecked( '_showFriedRice' ))	{ setButton( '_showFriedRice', false ); }
	if( isUnChecked( '_showEggFooYoung' ))	{ setButton( '_showEggFooYoung', false ); }
	if( isUnChecked( '_showSoup' ))			{ setButton( '_showSoup', false ); }
	if( isUnChecked( '_showAppetizers' ))	{ setButton( '_showAppetizers', false ); }
	if( isUnChecked( '_showDesserts' ))		{ setButton( '_showDesserts', false ); }
	if( isUnChecked( '_showChef' ))			{ setButton( '_showChef', false ); }
}




function checkButtonStatus() {
	var status = '';

	if(	 
		isChecked( '_showBeef' ) 			||
		isChecked( '_showChicken' ) 		||
		isChecked( '_showDuck' )			||
		isChecked( '_showPork' )			||
		isChecked( '_showShrimp' )			||
		isChecked( '_showVeggies' )			||
		isChecked( '_showChowMein' )		||
		isChecked( '_showLoMein' )			||
		isChecked( '_showFriedRice' )		||
		isChecked( '_showEggFooYoung' )		||
		isChecked( '_showSoup' )			||
		isChecked( '_showAppetizers' )		||
		isChecked( '_showDesserts' )		||
		isChecked( '_showChef' )			
	)
	{	status = 'a button is checked'; }

	if(	
		isUnChecked( '_showBeef' ) 			&&
		isUnChecked( '_showChicken' ) 		&&
		isUnChecked( '_showDuck' )			&&
		isUnChecked( '_showPork' )			&&
		isUnChecked( '_showShrimp' )		&&
		isUnChecked( '_showVeggies' )		&&
		isUnChecked( '_showChowMein' )		&&
		isUnChecked( '_showLoMein' )		&&
		isUnChecked( '_showFriedRice' )		&&
		isUnChecked( '_showEggFooYoung' )	&&
		isUnChecked( '_showSoup' )			&&
		isUnChecked( '_showAppetizers' )	&&
		isUnChecked( '_showDesserts' )		&&
		isUnChecked( '_showChef' )			
	)
	{	status = 'no buttons are checked'; }
	
	if(	
		isChecked( '_showBeef' ) 			&&
		isChecked( '_showChicken' ) 		&&
		isChecked( '_showDuck' )			&&
		isChecked( '_showPork' )			&&
		isChecked( '_showShrimp' )			&&
		isChecked( '_showVeggies' )			&&
		isChecked( '_showChowMein' )		&&
		isChecked( '_showLoMein' )			&&
		isChecked( '_showFriedRice' )		&&
		isChecked( '_showEggFooYoung' )		&&
		isChecked( '_showSoup' )			&&
		isChecked( '_showAppetizers' )		&&
		isChecked( '_showDesserts' )		&&
		isChecked( '_showChef' )			
	)
	{	status = 'all buttons are checked'; }

	return status;
}




function setControlFocus( _this ) {
	fadeLayerDown(); 

	switch( _this ) {
		case 'sortOrder':
			$( 'hLite1' ).uncover();
		break;

		case 'sortPrice':
		case '_maxCost':
			$( 'hLite2' ).uncover(); 
		break;

		case '_menuSearch':
			$( 'hLite3' ).uncover();
	}
}

function removeControlFocus() {
	$( 'hLite1' ).cover();
	$( 'hLite2' ).cover();
	$( 'hLite3' ).cover();
}




// this makes a string safe to pass in the url,
// so that we can pass HTML for example as a parm to the menu
//
// it also performs moderate string translation, so that we
// can insert custom tags like '<g1>' into our text, and it
// will change it to '<span class="g1">'
function urlAutoEncode( _arg ) {
	_arg = strTranslate( _arg );
					
	var _ret = '', _char = '', _tmp = '', _e = '';
	var encodeList = "<>/%&é";

	for( var x=0; x<_arg.length; x++ ) {
		_char = _arg.substr( x, 1 );
		
		_tmp = _char;
		for( var y=0; y<encodeList.length; y++ ) {
			_e = encodeList.substr( y, 1 );
			if( _char.indexOf( _e ) !== -1 ) { _tmp = urlEncode( _char ); }
		}
		
		//alert( _char + ' -> ' + _tmp );
		_ret += _tmp;
	}
	return _ret;
}

function urlEncode( _arg ) {
	var _ret = '', _char = '', _hex = '';
	
	for( var x=0; x<_arg.length; x++ ) {
		_char = _arg.substr( x, 1 );
		if( _char === '/' ) { _char = '`'; }
		if( _char === '%' ) { _char = '#'; }

		_hex = "%" + DecToHex( _char.charCodeAt(0) );
		_ret += _hex;
	}
	return _ret;			
}

function strTranslate( _arg ) {
	var  _out = '';
	_out = _arg.replace(        /<g1>/g, "<span class=\'g1\'>" );
	 _out = _out.replace(       /<g2>/g, "<span class=\'g2\'>" );
	  _out = _out.replace(      /<g3>/g, "<span class=\'g3\'>" );
	   _out = _out.replace(     /<g4>/g, "<span class=\'g4\'>" );
		_out = _out.replace(    /<g5>/g, "<span class=\'g5\'>" );
		 _out = _out.replace(   /<g6>/g, "<span class=\'g6\'>" );
		  _out = _out.replace(  /<g7>/g, "<span class=\'g7\'>" );
		   _out = _out.replace( /<gy>/g, "<span class=\'gy\'>" );

	_out = _out.replace(        /<\/g1>/g, "</span>" );       // </g1>
	 _out = _out.replace(       /<\/g2>/g, "</span>" );    
	  _out = _out.replace(      /<\/g3>/g, "</span>" );    
	   _out = _out.replace(     /<\/g4>/g, "</span>" );   
		_out = _out.replace(    /<\/g5>/g, "</span>" );    
		 _out = _out.replace(   /<\/g6>/g, "</span>" );    
		  _out = _out.replace(  /<\/g7>/g, "</span>" );    
		   _out = _out.replace( /<\/gy>/g, "</span>" );    
	
	return _out;
}

function DecToHex( _dec ) {
	var hD="0123456789ABCDEF";
	var h = hD.substr( _dec & 15, 1 );
	while( _dec > 15 ) { _dec >>= 4; h = hD.substr( _dec & 15, 1 ) + h; }
	return h;
}

function HexToDec( _hex ) {
	return parseInt( h,16 );
} 




function cycleMenuBackground( _in ) { //alert( 'button: ' + _in );
	var _fnum = 0;
	var _sharp = '';
	var _gamma = '';
	var _color = '';
	var newSRC = '';

	_fnum = getRegExFromFilename( /.*(\d).*/ );
		
	_sharp = getRegExFromFilename( /.*S(\D).*/ );
	_gamma = getRegExFromFilename( /.*I(\D).*/ );
	_color = getRegExFromFilename( /.*M(\D).*/ );
				
	switch( _in ) {
		case 'gSharpnessBTN':
			_sharp = _sharp.charCodeAt(0) + deltaSharpness;  
			
			//alert( _sharp + ' ' +  String.fromCharCode( _sharp ) );
			if( _sharp > rangeSharpness.charCodeAt(1) ) {
				_sharp -= 2;
				deltaSharpness *= -1;
			}
			if( _sharp < rangeSharpness.charCodeAt(0) ) {
				_sharp += 2;
				deltaSharpness *= -1;
			}
			//alert( _sharp + ' ' +  String.fromCharCode( _sharp ) );
								
			_sharp = String.fromCharCode( _sharp ); 
			break;
			
		case 'gGammaBTN':
			_gamma = _gamma.charCodeAt(0) + deltaGamma;  
			
			if( _gamma > rangeGamma.charCodeAt(1) ) {
				_gamma -= 2;
				deltaGamma *= -1;
			}
			if( _gamma < rangeGamma.charCodeAt(0) ) {
				_gamma += 2;
				deltaGamma *= -1;
			}
								
			_gamma = String.fromCharCode( _gamma ); 
			break;

		case 'gSaturationBTN':
			//alert( 'saturation button ' + _dBugKeyBuffer );
		
			if( deltaColor === 1 ) {
				gb_FadingIsActive = true;
				faderValue = $( 'mainLayerIMG' ).getOpacity() * 100;
				TimerIsRunning = true;
				fadeStart( gi_fadeSpeedValue );
			} else {
				gb_FadingIsActive = false;
				window.clearInterval( _timerID );
				TimerIsRunning = false;
			}
			
			deltaColor *= -1 ;
			
			adjustGUI();
			break;

		case 'gResetBTN':
			if( _dBug === 1 ) {
				_gaq.push(['_trackEvent', 'events', 'deBug', 'deactivated']);
				_dBug = 0; alert( 'debug mode: OFF' );
			}
						
			if( _dBugKeyBuffer === 449 ) {
				_gaq.push(['_trackEvent', 'events', 'deBug', 'activated']);
				_dBug = 1; alert( 'debug mode: ON' );
			}
			 _dBugKeyBuffer = 0;

			window.clearInterval( _timerID );
			TimerIsRunning = false; faderValue = 99; faderPlus = 0; faderMinus = 1;

			resetTheme();
			adjustGUI();
	}

	if( _in !== 'gSaturationBTN' && _in !== 'gResetBTN' ) {
		newSRC = 'frame' + _fnum + 'S' + _sharp + 'I' + _gamma + 'M' + _color  + '.jpg'; 
		$( 'mainLayerIMG' ).src = './pix/' + newSRC; //alert( newSRC ); 
	}
}




function resetTheme() {
	$( 'mainLayerIMG' ).src = gs_themeMainLayerIMGsrc;
	$( 'mainLayerIMG' ).setOpacity( gl_themeOpacity );
	document.body.style.background = "url('" + gs_themeBackgroundIMGsrc + "') white fixed no-repeat center center";
}




function footBar( _in ) {
	switch ( _in ) {
		case 1:
			_gaq.push(['_trackEvent', 'events', 'fooBar', 'kitchen scene']);

			var _k = 'imelatog xw a lsni ve  aia onl os wtlfnwurpl ee  t  eih efeooixntth sitc';
			var _ee1 = 'mjvubfrlht/d.aycpixgqpsz.e/kj1wgopnx';
			gs_bGroundImg = _unShuffleData( _ee1, _k );

			document.body.style.background = "url('" + gs_bGroundImg + "') white fixed no-repeat top left";
			_dBugKeyBuffer = 0;

			// MSIE resists all attempts to reset the controls when one of them has focus(!)
			//$( '_menuSearch' ).blur(); $( 'resetMenuBTN' ).click(); resetButtonControl();
			break;
	
		case 2:
			_gaq.push(['_trackEvent', 'events', 'fooBar', 'guitar scene']);

			new Effect.Opacity( $( 'menuBarLayer' ), { from: 1.0, to: 0.0, duration: 1 });
			$( 'menuOptionsLayer' ).cover();
			$( 'menuLayerScroller' ).cover();
			$( 'menuLayer' ).cover();
			$( 'hLite3' ).cover();
			$( 'statusLayer' ).cover();
			$( 'itemCountLayer' ).cover();
			$( 'clearMenuBTN' ).cover();
			$( 'selectMenuBTN' ).cover();

			var _html = '.wemm=em"""sm1atwbtT"e4ah7i"/c 8cel/naata k"_n"7ct0ept=psvtyeia/e=Sh"?T8lo;ynwarbjuw/0mlalra=l; wtjpw"<l"ascm etsrrcyuew:e"panetibpo<t&ldHe<= >>.ko auckat>mtwe=&ee/lyuas/>3oetu<rdumomesf&tm8"odm"cml<=sem>p"8um=r>"a=frr=crhcy<lmes"c=ota4cic"preii==aapb0em><-om2Ull1t"i"e-/ea thovxha"hv"tae=oso3 id/ce=a =?j<FxF9l;siwe-Oc"lo/aehp>ef=dpSaro"a2 "cnixvphla=r0n.ntso"t<yIib9gow3"aeI"sr yln0mn/bdue>syacrwl"ew>am 8avuup"vF:H.c-ran <altaorUpf oh=h/mb"gea8phr_lo3c ;v"t0"s p"ect==a"esaw&lp/lr0mIoehlseaelwiwa/0 iu=eap=elSaF/t';
			var _k = 'imelatog xw a lsni ve  aia onl os wtlfnwurpl ee  t  eih efeooixntth sitc';
			_html = _unShuffleData( _html, _k );
			
			$( 'eLayer' ).update( _html );
			$( 'eLayer' ).uncover();
			$( 'ytBTN' ).uncover();
	}
}




function fooBar() {
	$( 'ytIFrame' ).remove();
	$( 'eLayer' ).cover();
	$( 'ytBTN' ).cover();

	new Effect.Opacity( $( 'menuBarLayer' ), { from: 0.0, to: 1.0, duration: 2 });
	$( 'menuOptionsLayer' ).uncover();
	$( 'menuLayerScroller' ).uncover();
	$( 'menuLayer' ).uncover();
	//$( 'hLite3' ).uncover();
	statusLayer( hideButtonsAsNecessary );
	$( 'itemCountLayer' ).uncover();
}




function setPriceRange( _in ) {
	var temp;
	var variance = 1.50;
	
	_in = _in.replace( /^\s+/, '' );

	_in = _in.replace( /\$/g, '' );
	_in = _in.replace( /then/i, 'than' );


	// check for specific text:

	// free
	if ( _in.match(/^(?:nada|zilch|zip|zero|gratis|null|free|nothing|nope|none|kostenlos|complimentary|0.?0*|no(-? *)charge|no(-? *)cost)$/i) ) {
		_in = '0-0';
	}

	// everything (default)
	if( _in.match(/^(?:any(thing)?|all|every(thing)?)$/i) ) {
		_in = '';  // _in = defaultMinCost.toString() + '-' + defaultMaxCost.toString();
	}
	
	// something
	if( _in.match(/^some(thing)?$/i) ) {
		switch( meal ) {
			case 'lunch':
				_in = getRandomNumber( 3, 8 ) + '';
				// get the integer, convert it to a string
				break;

			case 'dinner':
				_in = getRandomNumber( 3, 12 ) + '';
		}
	}

	
	_in = _in.replace( /one/i, '1' );
	_in = _in.replace( /two/i, '2' );
	_in = _in.replace( /three/i, '3' );
	_in = _in.replace( /four/i, '4' );
	_in = _in.replace( /five/i, '5' );
	_in = _in.replace( /six/i, '6' );
	_in = _in.replace( /seven/i, '7' );
	_in = _in.replace( /eight/i, '8' );
	_in = _in.replace( /nine/i, '9' );
	_in = _in.replace( /ten/i, '10' );
	_in = _in.replace( /eleven/i, '11' );
	_in = _in.replace( /twelve/i, '12' );
	
		
	
	//var myregexp = /(~?<?>?=?)\s*(\d*[.]?\d*)\s*([-]*)\s*(\d*[.]?\d*)\s*/;
	var myregexp =/(~|<|>|=|over|not more than|no more than|more than|under|not less than|no less than|less than|equal to|equals|equal|exactly|just|only|is|about|around|roughly|sorta|from|between)?\s*(\d*[.]?\d*)\s*([-]|[,]|to|and)?\s*(\d*[.]?\d*)\s*/i;
	
	
	var match = myregexp.exec( _in );

	costMode = 'a';
	// no price entered


	
	minCost = defaultMinCost; 
	maxCost = defaultMaxCost; 

	// sets the average target price (+/- default variance)
	if( match[2] && ( !match[4] || isNaN( match[4] ))) {
		minCost = ( !match[2] || isNaN( match[2] ) ? defaultMinCost : match[2] );
		minCost = (( minCost - variance < defaultMinCost ) ? defaultMinCost : roundToPennies( match[2] ) - variance );
		maxCost = roundToPennies( match[2] ) + variance;

		costMode = 'b';
	}
	if( match[1] === 'about' || match[1] === 'around' || match[1] === 'roughly' || match[1] === 'sorta' || match[1] === '~' ) {
		minCost = ( !match[2] || isNaN( match[2] ) ? defaultMinCost : match[2] );
		minCost = (( minCost - variance < defaultMinCost ) ? defaultMinCost : roundToPennies( match[2] ) - variance );
		maxCost = roundToPennies( match[2] ) + variance;

		costMode = 'b';
	}
	// sets the average target price (+/- user specified variance)
	if( match[2] && match[3] === ',' && match[4] ) {
		minCost = roundToPennies( match[2] ) - roundToPennies( match[4] );
		maxCost = roundToPennies( match[2] ) + roundToPennies( match[4] );

		costMode = 'b';
	}
	
	// selects dishes cheaper than the price specified (set max cost)
	if( match[1] === 'under' || match[1] === 'less than' || match[1] === 'no more than' || match[1] === 'not more than' || match[1] === '<' ) {
		minCost = defaultMinCost; 
		maxCost = ( !match[2] || isNaN( match[2] ) ? defaultMaxCost : roundToPennies( match[2] )); 

		costMode = 'c';
	}
	
	// selects dishes costing more than the price specified (set min cost)
	if(( match[1] === 'over' || match[1] === 'more than' || match[1] === 'no less than' || match[1] === 'not less than' || match[1] === '>' ) || ( match[1] === 'from' && match[3] !== 'to' )) {
		minCost = ( !match[2] || isNaN( match[2] ) ? defaultMinCost : roundToPennies( match[2] )); 
		maxCost = defaultMaxCost;

		costMode = 'd';
	}

	// set exact price
	if( match[1] === 'equal' || match[1] === 'equals' || match[1] === 'equal to' || match[1] === 'exactly' || match[1] === 'just' || match[1] === 'only' || match[1] === 'is' || match[1] === '=' ) {
		minCost = ( !match[2] || isNaN( match[2] ) ? defaultMinCost : roundToPennies( match[2] )); 
		maxCost = minCost; 

		costMode = 'e';
	}
	
	// set a range, min to max
	if(( match[3] === '-' ) || ( match[1] === 'from' && match[3] === 'to' ) || ( match[1] === 'between' && match[3] === 'and' ) || ( match[3] === 'to' )) {
		minCost = ( !match[2] || isNaN( match[2] ) ? defaultMinCost : roundToPennies( match[2] )); 
		maxCost = ( !match[4] || isNaN( match[4] ) ? defaultMaxCost : roundToPennies( match[4] )); 

		costMode = 'f';
	}

	// corrects swapped price range (e.g., 15-9)
	temp = minCost;
	minCost = Math.min( minCost, maxCost ); 
	maxCost = Math.max( temp, maxCost ); 

	// bound low cost
	minCost = Math.max( minCost, defaultMinCost ); 
}




// logic to adjust the frame image, so we can make it sharper/brighter, etc.
///////////////////////////////////////////////////////////////////////////////
function getRegExFromFilename( _regex ) {
	var match = _regex.exec( $( 'mainLayerIMG' ).src );
	return match[1];
}
///////////////////////////////////////////////////////////////////////////////




function roundToPennies( _n ) {
	var pennies = Math.round( _n * 100 );
	var strPennies = '' + pennies;
	var len = strPennies.length;
	return parseFloat( strPennies.substring( 0, len - 2 ) + '.' + strPennies.substring( len - 2, len ));
}

function addSalesTax( _amt ) {
	_amt = parseFloat( _amt );
	_amt += ( _amt * ( ohioSalesTax * 0.01 ));
	return roundToPennies( _amt );
}

function addGratuity( _amt, _percent ) {
	_percent = parseFloat( _percent / 100 );
	_amt = parseFloat( _amt );
	_amt += ( _amt * _percent );
	return roundToPennies( _amt );
}

function dollarFormat( _amt ) {
	var sAmt = _amt + '';
	if( sAmt.indexOf('.') === -1 ) { sAmt += '.00'; }
	var aAmt = sAmt.split('.');
	if( aAmt[1].length === 1 ) { sAmt += '0'; }
	return commaFormat( sAmt );
}

function commaFormat( _str ) {
	_str += '';
	var x = _str.split('.');
	var x1 = x[0];
	var x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while( rgx.test( x1 )) {
		x1 = x1.replace( rgx, '$1' + ',' + '$2' );
	}
	return x1 + x2;
}





function adjustGUI() {
	if( TimerIsRunning ) {
		$( 'gSaturationBTN' ).title = " Translucense: cycling "; 
		$( 'gSaturationBTN' ).statusText = " Fade starting from " + eval('100 - faderValue') + "% transparency ";
	} else {
		$( 'gSaturationBTN' ).title = " Translucense ";
		$( 'gSaturationBTN' ).statusText = " ";
	}				
	
	if( MenuHelpIsActive ) {
		$( 'selectMenuBTN' ).title = " There are no selected menu items to view ";
		$( 'selectMenuBTN' ).statusText = " You have no selections. Please choose something from the menu. "
		//return winStatus( $( 'selectMenuBTN' ).statusText );

	} else {
		$( 'selectMenuBTN' ).title = " View selections and total price ";
		$( 'selectMenuBTN' ).statusText = " View your custom menu showing selections, totals and price including sales tax. "
		//return winStatus( $( 'selectMenuBTN' ).statusText );
	}
}




function fadeControl() {
	if( faderValue < faderHiBound && faderPlus ) {
		faderValue += faderAdjust;
	} else {
		faderPlus  = 0;
		faderMinus = 1;
	}

	if( faderValue > faderLoBound && faderMinus ) {
		faderValue -= faderAdjust;   //1
	} else {
		faderPlus  = 1;
		faderMinus = 0;
	} 

	setMainLayerOpacity( faderValue );
}

function setMainLayerOpacity( _val ) {
	$( 'mainLayerIMG' ).setOpacity( _val/100 );
}

function fadeStart( _interval ) {
	_timerID = setInterval( "fadeControl()", _interval ); //400
}




// these are used to temporarily interrupt layer fades
// when "google street view" is invoked
//////////////////////////////////////////////////////
function suspendFade() {
	window.clearInterval( _timerID );
	TimerIsRunning = false;
}
function resumeFade() {
	faderValue = $( 'mainLayerIMG' ).getOpacity() * 100;
	TimerIsRunning = true;
	fadeStart( gi_fadeSpeedValue );
}
//////////////////////////////////////////////////////




function setBackground() {
	var _postFix = 'a_1';
	var _newBackgroundImg = './pix/bg14' + _postFix + '.jpg';
	
	if( percent( 50 )) { 
		_gaq.push(['_trackEvent', 'events', 'frame', 'normal']);
		adjustMainLayer( 999 );
	} else {
		_gaq.push(['_trackEvent', 'events', 'frame', 'vista']);
	}	
	// half the time show a "Windows Vista-ish" look...
			
	if( percent( 30 )) {
		var _newBackgroundImg = getRandomNumber( 15, 16 );
		adjustMainLayer( _newBackgroundImg );
		_newBackgroundImg = './pix/bg' + _newBackgroundImg + _postFix + '.jpg';
	} else {
		_gaq.push(['_trackEvent', 'events', 'background', 'watercolor']);
	}

	document.body.style.background = "url('" + _newBackgroundImg + "') white fixed no-repeat center center";
	gs_bGroundImg = _newBackgroundImg;
	gs_themeBackgroundIMGsrc = _newBackgroundImg;
}

function adjustMainLayer( _val ) {
	if( !showMessage ) {
	
		switch( _val ) {
			case 15:
				_gaq.push(['_trackEvent', 'events', 'background', 'wood']);

				$( 'vistaLayer' ).cover();
				gs_themeMainLayerIMGsrc = "./pix/frame1SaIdMa.jpg";
				$( 'mainLayerIMG' ).src = gs_themeMainLayerIMGsrc; 
				gl_themeOpacity = 0.8;
				$( 'mainLayerIMG' ).setOpacity( gl_themeOpacity );

				$( 'welcomeLayerScroller' ).style.background = "url( './pix/scrollbar-track-bottom6.png' ) transparent no-repeat bottom left";
				$( 'track1-top' ).style.background           = "url( './pix/scrollbar-track-top6.png ') transparent no-repeat top left";
				$( 'menuLayerScroller' ).style.background    = "url( './pix/scrollbar-track-bottom6.png' ) transparent no-repeat bottom left";
				$( 'track2-top' ).style.background           = "url( './pix/scrollbar-track-top6.png ') transparent no-repeat top left";
				
				cycleMenuBackground( 'gSaturationBTN' );
				break;

			case 16:
				_gaq.push(['_trackEvent', 'events', 'background', 'painting']);

				$( 'vistaLayer' ).cover();
				gs_themeMainLayerIMGsrc = "./pix/frame1SbIbMa.jpg";
				$( 'mainLayerIMG' ).src = gs_themeMainLayerIMGsrc; 
				gl_themeOpacity = 0.6;
				$( 'mainLayerIMG' ).setOpacity( gl_themeOpacity );

				$( 'welcomeLayerScroller' ).style.background = "url( './pix/scrollbar-track-bottom7.png' ) transparent no-repeat bottom left";
				$( 'track1-top' ).style.background           = "url( './pix/scrollbar-track-top7.png ') transparent no-repeat top left";
				$( 'menuLayerScroller' ).style.background    = "url( './pix/scrollbar-track-bottom7.png' ) transparent no-repeat bottom left";
				$( 'track2-top' ).style.background           = "url( './pix/scrollbar-track-top7.png ') transparent no-repeat top left";
			
				cycleMenuBackground( 'gSaturationBTN' );
				break;

			case 999:		// Windows VISTA-ish look 
				gb_vistaLayerIsActive = true;
				$( 'vistaLayer' ).uncover();  // normally hidden
				gs_themeMainLayerIMGsrc = "./pix/frame1SaIeMa.jpg";
				$( 'mainLayerIMG' ).src = gs_themeMainLayerIMGsrc; 
				gl_themeOpacity = 0.4;
				$( 'mainLayerIMG' ).setOpacity( gl_themeOpacity );
				// NOTE: calling $( 'mainLayerIMG' ).getOpacity() right after setting the
				// bitmap via $( 'mainLayerIMG' ).src made MSIE refuse to display the bitmap! 
		}
	}
}




function getRandomNumber( loBound, hiBound ) {
	var _lob, _hib;

	_loB = loBound;
	_hiB = hiBound - loBound + 1;
	
	if( loBound > hiBound ) { 
		_loB = hiBound;
		_hiB = loBound - hiBound + 1;
	}

	var random_num = Math.floor( Math.random( initRNG( 1 ) ) * _hiB ) + _loB;
	return random_num;
}

// Use actual time to initialize (seed) the random function
function initRNG( _konstant ) {
	var rngS1 = new Date().getMilliseconds();
	var rngS2 = new Date().getMilliseconds();
	var rngS3 = new Date().getSeconds();
	var rngSeed = (( rngS1 * _konstant ) - rngS2 ) + rngS3; //alert( rngSeed );
	return rngSeed;
}

function percent( _percentage ) {
	if( getRandomNumber( 1, 100 ) <= _percentage ) {
		return true;
	} else {
		return false;
	}
}




function revealEmailAddress( _k ) {
	var _cipherText = 'oT:@.orcamghiaoteromYSialte';
	return( _unShuffleData( _cipherText, _k ));
}




function jsCSS( a, o, c1, c2 ) {
	switch (a) {
		case 'swap':
			o.className =! jscss( 'check', o, c1 ) ? o.className.replace( c2, c1 ) : o.className.replace( c1, c2 );
			break;
		case 'add':
			if( !jsCSS( 'check', o, c1 )) { o.className += o.className ? ' '+c1 : c1; }
			break;
		case 'remove':
			var rep = o.className.match( ' '+c1 ) ? ' '+c1 : c1;
			o.className = o.className.replace( rep, '' );
			break;
		case 'check':
			return new RegExp('\\b'+c1+'\\b').test(o.className)
			break;
	}
}
/*
function jsCSS [use to manage CSS classes for elements]

This function takes four parameters:
a  -- defines the action you want the function to perform. 
o  -- the object in question. 
c1 -- the name of the first class 
c2 -- the name of the second class 

Possible actions are:
swap -- replaces class c1 with class c2 in object o. 
add  -- adds class c1 to the object o. 
remove -- removes class c1 from the object o. 
check  -- test if class c1 is already applied to object o and returns true or false. 

credit: ////////////////////////////////////////////////////////////////////////////////
Unobtrusive Javascript (Separation of CSS and Javascript)
http://onlinetools.org/articles/unobtrusivejavascript/index.html [cached in Google]
////////////////////////////////////////////////////////////////////////////////////////
*/

function applyFilter( _o, _filter ) {
	jsCSS( 'add', _o, _filter );
}




function isVisible( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( _el.getStyle( 'visibility' ) === 'visible' ) { returnValue = true; }
	return returnValue;
}
function isInvisible( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( _el.getStyle( 'visibility' ) === 'hidden' ) { returnValue = true; }
	return returnValue;
}




function isOpaque( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( Element.getOpacity( _el ) == 0 ) { returnValue = true; }
	return returnValue;
}
function isNotOpaque( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( Element.getOpacity( _el ) == 1 ) { returnValue = true; }
	return returnValue;
}
function isTransparent( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( Element.getOpacity( _el ) != 0 && Element.getOpacity( _el ) != 1 ) { returnValue = true; }
	return returnValue;
}




function isChecked( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( _el.checked === true ) { returnValue = true; }
	return returnValue;
}
function isUnChecked( _el ) {
	var _el = $( _el );
	var returnValue = false;
	if( _el.checked !== true ) { returnValue = true; }
	return returnValue;
}

