idx = 0
typed = ""
typing_keycode = 0
typing_pressed = 0
should_scroll = 0

function unbubble() {
//	event.keyCode = 0
	window.event.cancelBubble = true
	event.returnValue = false
}

up_setvalue = ""

function basket_clear() {
	for (var i=0; i<itnames_array.length; i++) {
		itname_tmp = itnames_array[i]
		product_it = MM_findObj(itname_tmp)
		if (product_it != null) {
			product_it.value = 0
		}
	}

	basket_total_qnty_td_elem = MM_findObj("basket_total_qnty_td")
	if (basket_total_qnty_td_elem != null) {
		basket_total_qnty_td_elem.innerHTML = 0
	}


	basket_total_sum_td_elem = MM_findObj("basket_total_sum_td")
	if (basket_total_sum_td_elem != null) {
		basket_total_sum_td_elem.innerHTML = 0
	}


	form_clear.submit()

	alert("Корзина очищена, но если вы всё-таки передумаете - можно снова проставить циферки в [количество] и корзина снова наполнится")
}

function recalc_totals() {
//	alert(itnames_array.length)

	basket_total_qnty_td_elem = MM_findObj("basket_total_qnty_td")
	if (basket_total_qnty_td_elem != null) {
		basket_total_qnty = 0;
		for (var i=0; i<itnames_array.length; i++) {
			itname_tmp = itnames_array[i]
			product_it = MM_findObj(itname_tmp)
			if (product_it != null) {
				product_qnty = product_it.value
				product_qnty = parseInt(product_qnty)
				basket_total_qnty += product_qnty
			}
		}
		basket_total_qnty_td_elem.innerHTML = basket_total_qnty
	}

	basket_total_sum_td_elem = MM_findObj("basket_total_sum_td")
	if (basket_total_sum_td_elem != null) {
		basket_total_sum = 0
		
		for (i=0; i<itnames_array.length; i++) {
			itname_tmp = itnames_array[i]
			product_sum_td_elem = MM_findObj(itname_tmp + "_sum_td")
			if (product_sum_td_elem != null) {
				product_sum = product_sum_td_elem.innerHTML
				product_sum = product_sum.replace(/ /, "");
				product_sum = parseInt(product_sum)
//	alert(itname_tmp + " / "  + product_sum + " / "  + basket_total_sum)
				if (product_sum + "~" != "NaN~") basket_total_sum += product_sum
			}
		}

		delivery_sum_td_elem = MM_findObj("delivery_sum_td")
		if (delivery_sum_td_elem != null) {
			delivery_sum = delivery_sum_td.innerHTML
			delivery_sum = delivery_sum.replace(/ /, "");
			delivery_sum = parseInt(delivery_sum)
//	alert(itname_tmp + " / "  + delivery_sum + " / "  + basket_total_sum)
			if (delivery_sum + "~" != "NaN~") basket_total_sum += delivery_sum
		}

		basket_total_sum_td_elem.innerHTML = basket_total_sum
	}

}

prev_qnty = 0
function process_addbasket() {
	itname = event.srcElement.name

	if (itname.search(/product_(\d*)/) != -1) {
		product = itname.replace(/product_(\d*)/, "$1");
		qnty = event.srcElement.value
		if (prev_qnty != qnty) {
			addbasket(product, qnty)

			product_price = 0;

			product_price_td = MM_findObj("product_"  + product + "_price_td")
			if (product_price_td != null) {
				product_price = product_price_td.innerHTML
				product_price = product_price.replace(/ /, "");
				product_price = parseInt(product_price)
				if (product_price + "~" == "NaN~") product_price = 0
			}

			product_sum_td = MM_findObj("product_" + product + "_sum_td")
			if (product_sum_td != null) {
				product_sum_td.innerHTML = product_price * qnty
			}
			
			recalc_totals()

//			alert("product=[" + product + "], qnty=[" + qnty + "]")
		} else {
//			alert("same value [" + prev_qnty + "], won't submit basket")
		}


	} else {
		alert("itname=[" + itname + "], not matched to [product_(\d*)]")
	}
}

function it_onkeydown() {
//	log("it_onkeydown/" + event.srcElement.name + ": " + event.keyCode)

	itnames_array_local = itnames_array
//	itnames_array_local = (arguments.length >= 1) ? arguments[1] : itnames_array
//	log("it_onkeydown: itnames_array=[" + itnames_array + "]")
//	log("it_onkeydown: itnames_array_local=[" + itnames_array_local + "]")
//	log("")

	itname = event.srcElement.name

//	log("it_onkeydown: itname_dictcontent=[" + itname_dictcontent + "]")

	switch (event.keyCode) {
		case 46:			// del
//		case 110:			// del gray
		case 8:				// backspace
//			alert("hmm?")
//			backspace should bubble !!! when focus lost then IE pageback!!
			break;

		case 40:	// enter
		case 13:	// down
			focus_next_it(1, 1)
			process_addbasket()
			unbubble()
			break;

		case 38:	// up
			focus_prev_it(1, 1)
			process_addbasket()
			unbubble()
			break;
		
		case 33:	// pgup
			process_addbasket()
			jump_it(-10)
			break;

		case 34:	// pgdown
			process_addbasket()
			jump_it(10)
			break;

		case 35:	// home
		case 36:	// end
		case 37:	// leftarrow
		case 39:	// rightarrow
		case 46:	// del
		case 16:	// shift
		case 18:	// alt
		case 17:	// ctrl
		case 91:	// win
		case 93:	// rclick
			break;
			
		default:
			if (event.ctrlKey == true) break;
			if (event.altKey == true) break;
			if (event.shiftKey == true) break;

			typing_keycode = event.keyCode
//			log(_sc[typing_keycode])
			chartyped = _sc[typing_keycode]

			if (chartyped + "~" != "undefined~") {
				range_selection = document.selection.createRange()
				range_selection.text = chartyped
				range_selection.collapse()
				range_selection.select()
				range_input = event.srcElement.createTextRange()
	
				process_addbasket()
			}

			unbubble()

//			log ("t" + typed)
 			break;
	}
}

function it_onkeyup() {
//	log("it_onkeyup/" + event.srcElement.name + ": " + event.keyCode)

	switch (event.keyCode) {
		case 40:
		case 13:
		case 38:
			typed = ""
//			log("it_onkeyup type=null")
			break;

		case 35:	// home
		case 36:	// end
		case 33:	// pgup
		case 34:	// pgdown
		case 37:	// leftarrow
		case 39:	// rightarrow
//		case 16:	// shift
			break;

		case  8:	// backspace
		case 46:	// del
//уменьшает typed если стираем бэкспейсом. не помогает при shift+выделить+delete/backspace
			typed = event.srcElement.value
//			alert(typed)
			process_addbasket()
			break;

		default:
			break;
	}
}


overwrite_focused = 0
function it_onfocus() {
//	log("it_onfocus/" + event.srcElement.name + ": " + event.keyCode)

//	typed = event.srcElement.value
	continue_copyto = 0

	itname = event.srcElement.name

	itnames_array_local = itnames_array
//	itnames_array_local = (arguments.length >= 1) ? arguments[1] : itnames_array
//	log("it_onfocus: itnames_array=[" + itnames_array + "]")
//	log("it_onfocus: itnames_array_local=[" + itnames_array_local + "]")

	if (itname != itnames_array_local[idx]) {
		idx = itname_locate(itname, itnames_array)
	}

	prev_qnty = event.srcElement.value

	typed = ""
//	log("it_onfocus type=null")

}


function itname_locate(itname, itnames_array_local) {
	ret = -1

//	log(itname)
//	if (is_tdate_from_tbase(itname)) itname = itname_fortdate(itname)
//	log(itname)

//	itnames_array_local = itnames_array
//	itnames_array_local = (arguments.length >= 2) ? arguments[2] : itnames_array
//	log("itname_locate: itnames_array=[" + itnames_array + "]")
//	log("itname_locate: itnames_array_local=[" + itnames_array_local + "]")
//	log("")

	for (var i=0; i<=itnames_array_local.length; i++) {
		if (itnames_array_local[i] == itname) {
			ret = i
			break
		}
	}
	return ret;
}

function jump_it(offset) {
//	log("jump_it(" + offset + ")")

	if (offset > 0) {
		for (j=0; j<offset-1; j++) focus_next_it(1, 1)
		focus_next_it(1, 1)
	} else {
		for (j=0; j>offset+1; j--) focus_prev_it(1, 1)
		focus_prev_it(1, 1)
	}
//	log("scrolled")
}


function focus_next_it(focus_onit, select_onit) {
//	log("focus_next_it")

	itname = event.srcElement.name
	itnames_array_local = itnames_array
//	itnames_array_local = (arguments.length >= 3) ? arguments[3] : itnames_array
//	log("focus_next_it: itnames_array=[" + itnames_array + "]")
//	log("focus_next_it: itnames_array_local=[" + itnames_array_local + "]")
//	log("")

	if (idx == 0) idx = itname_locate(itname, itnames_array_local)
	if (idx == -1) {
		log("focus_next_it: can't locate itname=[" + itname + "] in itnames_array_local=[" + itnames_array_local + "] array")
		return
	}

	trg_obj = null
	f = 1
	for(f = 1; f<=5; f++) {
		trg = idx + f
		if (trg >= itnames_array_local.length) {
			return
			trg = 0 + (trg - itnames_array_local.length)
		}
	
//		log ("focus_next_it: itnames_array_local[" + idx + "]=[" + itnames_array_local[idx] + "] -> itnames_array_local[" + trg + "]=[" + itnames_array_local[trg] + "]")
		trg_obj = document.all(itnames_array_local[trg])

//		log(trg_obj)
		if (trg_obj != null) {
//			log(trg_obj.name)
//			log(trg_obj.value)
			break;
		}

		trg_obj = document.all(itnames_array_local[trg] + "_day")

//		log(trg_obj)
		if (trg_obj != null) {
//			log(trg_obj.name)
//			log(trg_obj.value)
			break;
		}

//		if (itname_locate(trg_obj.name) != 0) break;
	}

	if (trg_obj != null) {
		if (focus_onit == 1) trg_obj.focus()
		if (select_onit == 1) trg_obj.select()
		idx = trg
	
		if (should_scroll == 1) {
			scrollByPx = f * trg_obj.clientHeight + 8
//			log(scrollByPx)
			window.scrollBy(0, scrollByPx)
		}
	}
}


function focus_prev_it(focus_onit, select_onit) {
//	log("focus_prev_it")

	itname = event.srcElement.name
	itnames_array_local = itnames_array
//	itnames_array_local = (arguments.length >= 3) ? arguments[3] : itnames_array
//	log("focus_prev_it: itnames_array=[" + itnames_array + "]")
//	log("focus_prev_it: itnames_array_local=[" + itnames_array_local + "]")
//	log("")

	if (idx == 0) idx = itname_locate(itname, itnames_array_local)
	if (idx == -1) {
		log("focus_prev_it: can't locate itname=[" + itname + "] in itnames_array_local=[" + itnames_array_local + "] array")
		return
	}

	trg_obj = null
	f = 1
	for(f = 1; f<=5; f++) {
		trg = idx - f
		if (trg < 0) {
			return
			trg = itnames_array_local.length-1+trg
		}
	
//		log ("focus_prev_it: itnames_array_local[" + idx + "]=[" + itnames_array_local[idx] + "] -> itnames_array_local[" + trg + "]=[" + itnames_array_local[trg] + "]")
		trg_obj = document.all(itnames_array_local[trg])

//		log(trg_obj)
		if (trg_obj != null) {
//			log(trg_obj.name)
//			log(trg_obj.value)
			break;
		}

		trg_obj = document.all(itnames_array_local[trg] + "_day")

//		log(trg_obj)
		if (trg_obj != null) {
//			log(trg_obj.name)
//			log(trg_obj.value)
			break;
		}

//		if (itname_locate(trg_obj.name) != 0) break;
	}

	if (trg_obj != null) {
		if (focus_onit == 1) trg_obj.focus()
		if (select_onit == 1) trg_obj.select()
		idx = trg

		if (should_scroll == 1) {
			scrollByPx = f * trg_obj.clientHeight + 8
//			log(scrollByPx)
			window.scrollBy(0, -scrollByPx)
		}
	}
}

function log(str) {
	document.all("log").innerHTML = document.all("log").innerHTML + "[" + str + "]<br>"
}



_sc = new Array()
_sc[49] = "1"
_sc[50] = "2"
_sc[51] = "3"
_sc[52] = "4"
_sc[53] = "5"
_sc[54] = "6"
_sc[55] = "7"
_sc[56] = "8"
_sc[57] = "9"
_sc[48] = "0"

_sc[103] = "7"
_sc[104] = "8"
_sc[105] = "9"
_sc[100] = "4"
_sc[101] = "5"
_sc[102] = "6"
_sc[97] = "1"
_sc[98] = "2"
_sc[99] = "3"
_sc[96] = "0"
