	// Array Remove - By John Resig (MIT Licensed)
	Array.prototype.remove = function(from, to) {
	  var rest = this.slice((to || from) + 1 || this.length);
	  this.length = from < 0 ? this.length + from : from;
	  return this.push.apply(this, rest);
	};

	var interId;
	var newht;
	var viewht;
	var swfobj;
	
	function setFlashHeight(newHeight) {
		newht = newHeight;
		
		swfobj = document.getElementById('swfMunchkinCartContent');
		
		var currentHt = swfobj.style.height.replace('px','');
		viewht = Math.max(Number(currentHt), 796);
		interId = setInterval(resizeFlash, 1);
		document.getElementById('footer').style.display = 'none';
		window.scrollTo(0, 0);
	}
	
	
	function resizeFlash() {
		if(Math.abs(viewht - newht) <= 10) {
			var viewht_delta = (viewht - 10);
			swfobj.style.height = viewht_delta + 'px';
			clearInterval(interId);
			document.getElementById('footer').style.display = 'block';
		} else if(viewht < newht) {
			viewht = viewht + 10;
			swfobj.style.height = viewht + 'px';
		} else {
			viewht = viewht - 20;
			swfobj.style.height = viewht + 'px';
		}
		
		// reset the flash content...
		if(swfobj)
			swfobj.onAppResize(viewht);
	}
	
	var orders = [];
	var order_total = 0;
	var order_item_count = 0;
	var order_ship_total = 2.50;
	var cart_container = document.getElementById('cart_container');
	function addCartItem( itemindex ) {
		var oitem = {};
		oitem.id = Number(current_catalog[itemindex].id);
		oitem.title = (String(current_catalog[itemindex].title).length > 26 ? 
							String(current_catalog[itemindex].title).substr(0, 26) + '...' : 
							current_catalog[itemindex].title);
		oitem.optionid = Number(document.getElementById('itemoptionid_' + itemindex).value);
		var ocontrol = document.getElementById('itemoptionid_' + itemindex);
		oitem.optiontext = ocontrol.options[ocontrol.selectedIndex].text;
		oitem.price = (Number(current_catalog[itemindex].isonsale) == 1 ? 
							Number(current_catalog[itemindex].defaultsaleprice) :
							Number(current_catalog[itemindex].defaultretailprice));
		oitem.quantity = Number(document.getElementById('quantity_' + itemindex).value);
		oitem.imguri = current_catalog[itemindex].photos[0].serveruri;
		
		// see if the item is already in the cart. If it is
		// update the cart item with the new quantity.
		for(var index=0;index<orders.length;index++) {
			if((orders[index].id == oitem.id) &&
			   (orders[index].optionid == oitem.optionid)) {
				var qty = (orders[index].quantity + oitem.quantity);
				adjustCartItem( oitem.id, oitem.optionid, qty );
				return;
			}
		}
		
		orders.length = (orders.length + 1);
		orders[(orders.length-1)] = oitem;
		
		var item_price = (oitem.quantity * oitem.price).toFixed(2);
		order_total += item_price;
		order_item_count += oitem.quantity;
		
		displayCartItem( oitem );
	}
	
	function removeCartItem( cart_item_id, item_option_id ) {
		var cart_target = document.getElementById('cart_item_' + cart_item_id + '_' + item_option_id);
		// see if the item is already in the cart. If it is
		// update the cart item with the new quantity.
		for(var index=0;index<orders.length;index++) {
			if((orders[index].id == cart_item_id) &&
			   (orders[index].optionid == item_option_id)) {
				orders.remove(index);
				cart_container.removeChild(cart_target);
				adjustCartItem(-1, -1, -1);
				return;
			}
		}
	}
	
	function adjustCartItem( cart_item_id, item_option_id, new_quantity ) {
		new_quantity = Number(new_quantity);
		if(isNaN(new_quantity)) {
			alert('Please enter a number, for example 1, 2 or 3!\r\nTry again!');
			document.getElementById('cart_item_qty_fld_' + cart_item_id + '_' + item_option_id).focus();
			document.getElementById('cart_item_qty_fld__' + cart_item_id + '_' + item_option_id).select();
			return;
		}
		
		order_total = 0;
		order_item_count = 0;
		var citem = document.getElementById('cart_item_' + cart_item_id + '_' + item_option_id);
		for(var index=0;index<orders.length;index++) {
			if((orders[index].id == cart_item_id) &&
			   (orders[index].optionid == item_option_id)) {
				orders[index].quantity = new_quantity;
				var newprice = (orders[index].price * new_quantity).toFixed(2);
				document.getElementById('cart_item_qty_fld_' + cart_item_id + '_' + item_option_id).value = String(new_quantity);
				document.getElementById('cart_item_total_' + cart_item_id + '_' + item_option_id).innerHTML = 'US$ ' + newprice;
			}
			
			order_total += (orders[index].quantity * orders[index].price);
			order_item_count += orders[index].quantity;
		}
		
		adjustSummaries();
	}
	
	function displayCartItem( oitem ) {
		var item_price = (oitem.quantity * oitem.price).toFixed(2);
		var cart_entry = document.createElement('div');
		cart_entry.id = 'cart_item_' +  oitem.id + '_' + oitem.optionid;
		cart_entry.className = 'cart_item';
		cart_entry.onmouseover = function() { this.style.backgroundColor = '#2D2D2D'; };
		cart_entry.onmouseout = function() { this.style.backgroundColor = '#3D3D3D'; };
		cart_entry.innerHTML = '<div class="cart_item_image"><img src="images/inventory/' + oitem.imguri + '" style="width:60px;height:62px;" /></div>' +
							   '<div class="cart_item_title">' + oitem.title + '</div>' +
							   '<div class="cart_item_detail">' +
							    '<div class="cart_item_size">Size: ' + oitem.optiontext + '</div>' + 
								'<div class="cart_item_qty">Qty: <input type="text" id="cart_item_qty_fld_' + oitem.id + '_' + oitem.optionid +
									'" name="cart_item_qty_fld_' + oitem.id + '_' + oitem.optionid + '" size="2" value="' + oitem.quantity + 
									'" onblur="adjustCartItem(' + oitem.id + ', ' + oitem.optionid + ', this.value);" /></div>' +
								'<div class="cart_item_remove"><button type="button" style="cursor:pointer" onclick="removeCartItem(' + oitem.id + ',' + oitem.optionid + ');">remove</button></div>' +
								'<div class="cart_item_total" id="cart_item_total_' + oitem.id + '_' + oitem.optionid + '">US$ ' + item_price + '</div>' +
								'<div style="clear:both;"></div>' + 
							   '</div>';
		cart_container.appendChild(cart_entry);
		adjustCartItem(-1, -1, -1);
	}
	
	var isCartRefresh = false;
	function refreshCart( ) {
		var orderList = readCookie('mmcart');
		if(orderList != null) {
			orders = JSON.parse(eval(orderList), function (key, value) {
				var type;
				if (value && typeof value === 'object') {
					type = value.type;
					if (typeof type === 'string' && typeof window[type] === 'function') {
						return new (window[type])(value);
					}
				}
				return value;
			});
			isCartRefresh = true;
			for(var oindex=0;oindex<orders.length;oindex++)
				displayCartItem( orders[oindex] );
			isCartRefresh = false;
		}
	}
	
	function adjustSummaries( ) {
		document.getElementById('cart_quantity').innerHTML = String(order_item_count);
		
		if(order_item_count > 1)
			order_ship_total = 2.50 + (0.5 * (order_item_count-1));
		else
			order_ship_total = 2.50;
		document.getElementById('cart_ship').innerHTML = 'US$ ' + String(order_ship_total.toFixed(2));
		
		order_total += order_ship_total;
		
		document.getElementById('cart_price').innerHTML = 'US$ ' + String(order_total.toFixed(2));
		document.getElementById('cart_total').innerHTML = 'US$ ' + String(order_total.toFixed(2));
		
		if(!isCartRefresh) {
			// save the cart to the person's local cookie store...
			createCookie('mmcart', JSON.stringify(orders), 1);
		}
	}
	
	var requested_catalog = 'skipped'; // auto racing
	var dashboard = document.getElementById('dashboard');
	var bkgrnd = document.getElementById('maincontent');
	var viewer = document.getElementById('catalog');
	var vcart = document.getElementById('cart');
	
	var page_size = 8;
	var page_count = 0;
	var current_page = 0;
	var current_catalog = [];
	
	function navtourl(hashmark) {
		if("https:" == document.location.protocol) {
			location = "http://www.motormunchkins.com/#" + hashmark;
			return;
		}
		
		switch('/' + hashmark) {
			case '/home': {
				dashboard = document.getElementById('swfMunchkinCartContent');
				if(dashboard != null) {
					dashboard.style.display = 'block';
				}
				vcart.style.display = 'none';
				viewer.style.display = 'none';
				bkgrnd.style.height = '525px'; // 700px
				requested_catalog = 'skipped';
			} break;
			
			case '/autoracing': requested_catalog = 'Auto Racing'; break;
			case '/motoracing': requested_catalog = 'Moto Racing'; break;
			case '/kartracing': requested_catalog = 'Kart Racing'; break;
			case '/coolstuff': requested_catalog = 'Other Cool Stuff'; break;
			case '/catalog': requested_catalog = 'Full Catalog'; hashmark=''; break;
			case '/about':
			case '/contact':
			case '/checkout': {
				// location = '/' + hashmark;
				requested_catalog = 'content';
			} break;
			
			default:
				alert('The page you are looking for does not exist!\r\nPage: ' + hashmark + '\r\nTry again!');
				break;
		}
		
		if(requested_catalog != 'skipped') {
			dashboard = document.getElementById('swfMunchkinCartContent');
			if(dashboard != null)
				dashboard.style.display = 'none';
			vcart.style.display = 'block';
			viewer.style.display = 'block';
			
			remoteCall('GET', 'http://www.motormunchkins.com/.webapi/catalogs/' + hashmark, null, navtourlHandler);
		}
	}

	function navtourlHandler( ) {
		if(httpObject.readyState == 4) {
			current_catalog = json_parse(httpObject.responseText);
			current_page = 0;
			page_count = Math.ceil(current_catalog.length / page_size);
			renderCatalogPage( current_page );
		}
	}
	
	function renderCatalogPage( target_page ) {
		var start_pos = (page_size * target_page);
		if(current_catalog && (start_pos < current_catalog.length)) {
			viewer.innerHTML = '';
			var catalog_header = document.createElement('div');
			catalog_header.className = 'catalog_banner';
			// catalog_header.innerHTML = requested_catalog;
			
			var top_label = document.createElement('div');
			top_label.className = 'banner_elements';
			top_label.style.marginRight = '70px';
			top_label.innerHTML = requested_catalog;
			
			var top_pager = document.createElement('div');
			top_pager.className = 'banner_elements';
			top_pager.style.textAlign = 'right';
			
			var cleaner = document.createElement('div');
			cleaner.style.clear = 'both';
			
			catalog_header.appendChild(top_label);
			catalog_header.appendChild(top_pager);
			catalog_header.appendChild(cleaner);
			
			viewer.appendChild(catalog_header);
			
			var page_item_count = 0;
			var skipped_items = 0;
			for(var index=start_pos;index<current_catalog.length;index++) {
				if((index - skipped_items) > ((page_size - 1) + start_pos)) break; // we have a max page size to keep...
				
				if(current_catalog[index].options.length == 0 || current_catalog[index].photos.length == 0) {
					skipped_items++;
					continue;
				}
				
				var ovalues = '';
				for(var oindex=0;oindex<current_catalog[index].options.length;oindex++) {
					ovalues += '<option value="' + current_catalog[index].options[oindex].id + '">' + current_catalog[index].options[oindex].tag + '</option>';
				}
				
				var item_view = document.createElement('div');
				item_view.className = 'item_view';
				item_view.onmouseover = function() { this.style.backgroundColor = '#393939'; };
				item_view.onmouseout = function() { this.style.backgroundColor = '#292929'; };
				item_view.innerHTML = '<p style="margin-left:5px;"><strong>' + current_catalog[index].title + '</strong></p>' +
									  '<div class="item_image">' + '<a href="images/inventory/' + current_catalog[index].photos[0].serveruri + '" title="' + current_catalog[index].description.replace(/"/g,'&quot;') + '" rel="lightbox[catalog]">' + 
									  	'<img style="width:146px;height:164px;" src="images/inventory/' + current_catalog[index].photos[0].serveruri + '" border="0"/></a></div>' +
									  '<div class="item_panel">' +
									   '<form>' +
									   '<div class="item_price">Price: $' + (Number(current_catalog[index].isonsale) == 1 ? 
																				current_catalog[index].defaultsaleprice :
																				current_catalog[index].defaultretailprice) + '</div>' +
									   '<div class="item_stock">In Stock</div>' +
									   '<div class="item_options"><select id="itemoptionid_' + index + '" name="itemoptionid_' + index + '">' + ovalues + '</select></div>' +
									   '<div class="item_quantity">Quantity: <input type="text" id="quantity_' + index + '" name="quantity_' + index + '" size="2" value="1" /></div>' +
									   '<div class="item_button">' + 
									   	   '<button class="buy_now_button" type="button" style="cursor:pointer" onclick="addCartItem(' + index + ');">Add To Cart</button>' +
									   '</div>' +
									   '</form>' + 
									  '</div>';
				viewer.appendChild(item_view);
				page_item_count+= 1;
			}
			
			if(page_item_count == 0)  {
				var item_view = document.createElement('div');
				item_view.className = 'item_view';
				item_view.onmouseover = function() { this.style.backgroundColor = '#393939'; };
				item_view.onmouseout = function() { this.style.backgroundColor = '#292929'; };
				item_view.innerHTML = '<p style="margin-left:5px;"><strong>Coming Soon</strong></p>';
				viewer.appendChild(item_view);
			}
		
			var clear_div = document.createElement('div');
			clear_div.className = 'cleaner';
			viewer.appendChild(clear_div);
			
			var spacer = document.createElement('div');
			spacer.innerHTML = '&nbsp;';
			viewer.appendChild(spacer);
			
			var catalog_footer = document.createElement('div');
			catalog_footer.className = 'catalog_banner';
			var pager = 'Pages:';
			current_page = target_page;
			for(var ipage=0;ipage<page_count;ipage++) {
				if(ipage == current_page)
					pager+= '&nbsp;&nbsp;<b>' + String(ipage+1) + '</b>';
				else {
					pager+= '&nbsp;&nbsp;<button type="button" style="cursor:pointer" onclick="renderCatalogPage(' + String(ipage) + ');">' + String(ipage+1) + '</button>';
				}
			}
			catalog_footer.innerHTML = pager;
			top_pager.innerHTML = pager;
			viewer.appendChild(catalog_footer);
			
			switch(page_item_count) {
				case 0:
				case 1:
				case 2:
				case 3:
				case 4:
					viewer.style.height = '600px';
					bkgrnd.style.height = '720px';
					vcart.style.height = '100%';
					break;
					
				case 5:
				case 6:
					viewer.style.height = '835px';
					bkgrnd.style.height = '955px';
					vcart.style.height = '100%';
					break;
					
				default:
					viewer.style.height = '1071px';
					bkgrnd.style.height = '1191px';
					vcart.style.height = '100%';
					break;
			}
		} // -- end iff --//
	}
	
	function renderCheckoutPage(  ) {
		var orderlist = readCookie('mmcart'); 
		var cookiejar = document.getElementById('frmcheckout');
		var cookies = document.getElementById('shoppingcart');
		cookies.text = encodeURIComponent(orderlist);
		// alert(cookies.text);
		cookiejar.submit();
		// location = 'https://www.motormunchkins.com/checkout.php';
	}
	
	function drawCheckoutPage( ) {
		var target_div = document.getElementById('catalog');
		target_div.innerHTML = '';

		var catalog_header = document.createElement('div');
		catalog_header.className = 'catalog_banner';
		catalog_header.innerHTML = 'Check Out';
		target_div.appendChild(catalog_header);
		
		var checkoutPanel = document.createElement('div');
		checkoutPanel.id = 'checkoutpanel';
		checkoutPanel.style.width = '715px';
		checkoutPanel.style.height = '540px';
		checkoutPanel.style.paddingLeft = '13px';
		target_div.appendChild(checkoutPanel);
		
		var checkoutContent = document.createElement('div');
		checkoutContent.id = 'checkoutcontent';
		checkoutPanel.appendChild(checkoutContent);
		
		viewer.style.height = '528px';
		bkgrnd.style.height = '648px';
		vcart.style.height = '100%';
		
		var cflashvars = false;
		
		var cparams = {
			scale:'exactfit',
			width:'690',
			height:'540',
			quality:'high',
			wmode:'transparent',
			allowFullScreen:'true',
			allowScriptAccess:'sameDomain'
		};
		
		var coptional_attributes = {
			id:'swfCheckoutContent',
			name:'swfCheckoutContent'
		};
		
		swfobject.embedSWF("swf/checkout.swf", "checkoutcontent", "690", "540", "10.0.0", "swf/expressInstall.swf", cflashvars, cparams, coptional_attributes);
	}
