
var QUICKO = new function() {

	var $qo, $qo_item, $qo_cart;
	var _products = null, _cart_items = null;
	
	this._addtocart = false;

	this.init = function() {
		$qo = jQuery("#quick_order_block");
		$qo_item = $qo.find("#qo_item_view");
		$qo_cart = $qo.find("#qo_cart>div");

		$qo.find("input[name='sku']").keydown(sku_entry);
		$qo.find("input[name='sku']").blur(this.findItem);
		$qo.find("input[name='sku_qty']").keydown(quantity_entry);

		CART.loadCart(true, this.renderCart);
	};

	var sku_entry = function(e) {
		//console.dir(e);
		var charCode = e.charCode ? e.charCode : e.keyCode;
		if (charCode == 13) {
			e.preventDefault();
			window.setTimeout("QUICKO.findItem()", 100);
			return false;
		}
	};

	var quantity_entry = function(e) {
		//var id_ = parseInt(/(\d+)/.exec(e.target.name)[0]);
		//if (line[id_].timer) { clearTimeout(line[id_].timer); line[id_].timer = 0; }

		var do_check_sku = false;

		var charCode = e.charCode ? e.charCode : e.keyCode;
		//alert(charCode);
		if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <= 105)) { //allow only digits
			do_check_sku = true;
		} else if (charCode != 8 && charCode != 9) { //prevent anything else except backspace and tab
			e.preventDefault();
			if (charCode == 13) window.setTimeout("QUICKO.addToCart()", 100);
			return false;
		} else if (charCode != 9) {
			do_check_sku = true;
		}

		//if (do_check_sku) {
		//	$qo.find("tr>td>img[name='sku_status_" + id_ + "']").attr("src", "/images/misc/loading.gif");
		//	line[id_].timer = setTimeout("sku_lookup(" + id_ + ")", 2000);
		//}
	};
	
	var set_result_html = function(html) {
		if (typeof html == "string"){
			$qo_item.html(html);
		}else{
			$qo_item.empty();
		}
	};

	this.showProduct = function(idx) {
		var item = _products[idx];
		document.location = item.url;
	};

	this.showCartItem = function(idx) {

	};

	this.findItem = function() {
		var sku, qty;
		sku = _form.elements["sku"].value.trim();
		qty = parseInt(_form.elements["sku_qty"].value);
		if (isNaN(qty)) qty = 0;
		
		var item = (_products != null && _products.length > 0) ? _products[0]: null;	//may have already found item
		
		if (sku.length==0 || (item!=null && item.sku==sku)) return;
		
		set_result_html("searching...");
		
		var fn_on_ajax_success = function(obj) {
			//console.dir(obj);
			if (obj.result == "OK" && ("products" in obj)) {
				_products = obj.products;
				var html = [];
				for (var i = 0, iE = _products.length, item; i < iE && (item = _products[i]); i++) {
					html.push("<div><a href=\"javascript:\" onclick=\"QUICKO.showProduct(" + i + ");\"><img src=\"" + item.image + "\" /></a><br />" + item.title + "</div><br />");
				}
				set_result_html(html.join(''));
				if (QUICKO._addtocart) QUICKO.addToCart();
			} else {
				_products = null;
				set_result_html(obj.message);
			}
			QUICKO._addtocart = false;
		};
		
		var re = /"/g;
		
		$.ajax({
			url: BASE_URL + "ajax.aspx?id=quickorder-find-item", type: "POST", //contentType: "application/json",
			data: "JSON=" + escape("{\"sku\":\"" + sku.replace(re, "\\\"") + "\",\"quantity\":" + qty + ",\"echo\":\"\"}"),
			dataType: "json",
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				alert("Error!\n" + textStatus + "\n" + errorThrown);
				//console.dir(XMLHttpRequest);
			},
			success: function(data, textStatus) {
				//alert("HTTP "+ this.type +"\n"+ textStatus +"\n"+ typeof(data));
				//console.dir(data);
				if (!("error" in data)) fn_on_ajax_success(data);
				else alert("Error!\n" + data.error);
			},
			complete: function(XMLHttpRequest, textStatus) {
				//alert("Complete.\n"+ textStatus);
			}
		});
	};

	this.addToCart = function() {
		var sku, qty;
		sku = _form.elements["sku"].value.trim();
		qty = parseInt(_form.elements["sku_qty"].value);
		if (isNaN(qty)) qty = 0;

		if (_products == null) {
			if (sku.length > 0){
				this._addtocart = true;
				this.findItem();
			}else{
				alert("Please find an item to be added to your cart.");
			}
			return;
		} else if (qty <= 0) {
			alert("Please enter the desired quantity to be added to your cart.");
			return;
		}

		var item = _products[0];

		var fn_on_ajax_success = function() {
			//console.dir(obj);
			QUICKO.renderCart();
			_products = null;
			_form.elements["sku"].focus();
			_form.elements["sku"].value = '';
			_form.elements["sku_qty"].value = '';
			set_result_html(false);
		};
		
		CART.addToCart(sku, qty, fn_on_ajax_success);
	};
	
	this.renderCart = function(){
		_cart_items = CART.getProductPicks();
		if (_cart_items != null) {
			var html = [];
			for (var i = 0, iE = _cart_items.length, item; i < iE && (item = _cart_items[i]); i++) {
				html.push("<ul><li class=\"part\">" + item.sku + "</li><li class=\"desc\"><a href=\"" + item.url + "\">" + item.title + "</a></li><li class=\"qty\">" + item.quantity + "</li></ul>");
			}
			$qo_cart.html(html.join(''));
		} else {
			$qo_cart.empty();
		}
	};

};
