/**
 * JavaScript Functions to manage user's basket
 */

/**
 * Increment Amount of an order
 */
function onov(id) {
$t=document.getElementById(id); 
	$t.className='onover';
}	

function onout(id) {
$t=document.getElementById(id); 
$t.className='common';		
}
function one_more(product_id) {
	var td     = document.getElementById('a'+product_id)
	var amount = myParseInt(td.innerHTML, 1)
	_amount_and_sum(++amount, product_id)
	return false
}

/**
 * Decrement Amount of an order
 */
function one_less(product_id) {
	var td     = document.getElementById('a'+product_id)
	var amount = myParseInt(td.innerHTML, 1)
	var less_btn
	_amount_and_sum(--amount, product_id)
	return false
}

/**
 * Set the display values for Sum and Total
 */
function _amount_and_sum(amount, product_id) {
	var totalNode  = document.getElementById('total_sum')
	var amountNode = document.getElementById('a'+product_id)
	var sumNode    = document.getElementById('s'+product_id)
	var priceNode  = document.getElementById('p'+product_id)
	var old_amount = myParseInt(amountNode.innerHTML, 1)
	var diff       = amount - old_amount
	var b_hash     = basketCookie2Array()
	b_hash[product_id] = amount
	writeBasketCookie(b_hash)
	amountNode.innerHTML = amount
	totalNode.innerHTML  = eval(totalNode.innerHTML+"+"+(diff*priceNode.innerHTML))
	sumNode.innerHTML = amount*priceNode.innerHTML
	var el = document.getElementById('l'+product_id)
	if (amount < 2) {
		el.setAttribute('disabled', 'true')
		el.disabled = true
	} else if (el.disabled) {
	 	el.removeAttribute('disabled')
	 	el.disabled = false
	}
}

/**
 * Move to step # step_no
 * @param int step_no
 */
function step(step_no) {
	var loc = window.location.toString()
	var newloc
	if (step_no && step_no > 1) newloc = loc.replace(/(\?.*)?$/, "?step="+step_no)
	else newloc = loc.replace(/(\?.*)?$/, "")
	window.location.href = newloc
}

/**
 * Set user information cookies
 */
function submitOrderStep1() {
	var surname, firstname, parentname, phone, email
	setCookie("h3[surname]", escape(document.getElementById("surname").value.trim()), getCookieExpirationDate(), "/")
	setCookie("h3[firstname]", escape(document.getElementById("firstname").value.trim()), getCookieExpirationDate(), "/")
	setCookie("h3[parentname]", escape(document.getElementById("parentname").value.trim()), getCookieExpirationDate(), "/")
	setCookie("h3[phone]", escape(document.getElementById("phone").value.trim()), getCookieExpirationDate(), "/")
	setCookie("h3[email]", escape(document.getElementById("email").value.trim()), getCookieExpirationDate(), "/")
	var radio = document.getElementById("userdataForm").elements['shipping']
	var shipping = getCheckedValue(radio)
	if (shipping) {
		setCookie("h3[shipping]", shipping, getCookieExpirationDate(), "/")
	}
//	var bc       = basketCookie2Array()
//	var i, bonus = {}
//	for (i in bc) {
//		bonus[i] = document.getElementById("bns"+i).value
//	}
//	setCookie("h3[bonus]", hash2string(bonus), getCookieExpirationDate(), "/")
	if (checkUserDataStep1()) {
		step(2)
	}
	return false;
}

/**
 * Check user data on step 1.
 */
function checkUserDataStep1() {
	var surname, firstname, parentname, phone, shipping, basket, errstr = []
	surname = unescape(getCookie("h3[surname]"))
	firstname = unescape(getCookie("h3[firstname]"))
	parentname = unescape(getCookie("h3[parentname]"))
	phone = unescape(getCookie("h3[phone]"))
	shipping = unescape(getCookie("h3[shipping]"))
	basket = unescape(getCookie("h3[basket]"))
	
	if (!surname || surname == 'null') {
		errstr[errstr.length] = "- Мы не знаем, кому доставить заказ. Скажите нам вашу фамилию.";
	}
	if (!firstname || firstname == 'null') {
		errstr[errstr.length] = "- Нам нужно знать ваше имя, чтобы не ошибиться при доставке."
	}
	if (!parentname || parentname == 'null') {
		errstr[errstr.length] = "- Мы хотим обращаться к вам уважительно. Скажите нам ваше отчество, пожалуйста."
	}
	
	if (!phone) errstr[errstr.length] = "- Кому же мы будем звонить - для того чтобы вовремя доставить заказ? Нам нужно знать ваш контактный телефон."
	else {
		var phone_format_wrong = "- Извините, но, похоже, вы неправильно ввели телефон"
		var phone_for_test = phone.replace(/(\s|-)/g, "")
		var rgx = /^((?:\+7)|8)?(?:\(?([1-9]\d{2,4})\)?)?([1-9]\d{4,7})$/
		if (!rgx.test(phone_for_test)) {
			errstr[errstr.length] = phone_format_wrong
		} else {
			var match = phone_for_test.match(rgx)
			if (!match[2]) {
				if (match[3].length != 7) {
					errstr[errstr.length] = phone_format_wrong
				}
			} else if (10 != (match[2].length + match[3].length)) {
				errstr[errstr.length] = phone_format_wrong
			}
		}
	}
	
	var shipping_wrong = "- А еще вы должны решить, каким образом нам доставить Ваш заказ."
	if (!shipping) {
		errstr[errstr.length] = shipping_wrong
	} else if (shipping != 'courier' && shipping != 'mail') {
		errstr[errstr.length] = shipping_wrong
	}
	if (!basket) errstr[errstr.length] = "- К сожалению, корзина заказа пуста. Может быть, вы наполните ее в наших каталогах?"
	if (errstr.length) {
		alert(errstr.join('\n'))
		return false
	}
	return true
}

/**
 * Set user information cookies
 */
function submitOrderStep2() {
	var o
	setCookie("h3[postcode]", escape(document.getElementById("postcode").value.trim()), getCookieExpirationDate(), "/")
	setCookie("h3[city]", escape(document.getElementById("city").value.trim()), getCookieExpirationDate(), "/")
	
	if (o = document.getElementById("region"))
		setCookie("h3[region]", escape(o.value.trim()), getCookieExpirationDate(), "/")
	
	setCookie("h3[street]", escape(document.getElementById("street").value.trim()), getCookieExpirationDate(), "/")
	setCookie("h3[house]", escape(document.getElementById("house").value.trim()), getCookieExpirationDate(), "/")
	
	if (o = document.getElementById("metro"))
		setCookie("h3[metro]", escape(o.value.trim()), getCookieExpirationDate(), "/")
		
	if (o = document.getElementById("flat"))
		setCookie("h3[flat]", escape(o.value.trim()), getCookieExpirationDate(), "/")
	
	setCookie("h3[notes]", escape(document.getElementById("notes").value.trim()), getCookieExpirationDate(), "/")
	
	if ('courier' == getCookie('h3[shipping]')) {
		var time = new Array()
		for (var i = 0; i < 4; ++i) {
			if (isNaN(time[i] = parseInt(document.getElementById("time_"+i).value))) {
				time[i] = '-'
			}
		}
		setCookie("h3[time]", escape(time.join(".")), 0, "/")
	}
	if (checkUserDataStep1() && checkUserDataStep2()) {
		step(3)
	}
	
	return false;
}

/**
 * Check user data on step 2.
 */
function checkUserDataStep2() {
	var errstr = new Array()
	var city, street, metro, flat, house
	city = unescape(getCookie("h3[city]"))
	street = unescape(getCookie("h3[street]"))
	
	if (!city || (city == 'null')) errstr[errstr.length] = "- Вы не указали город, в котором живете"
	if (!street || (street == 'null')) errstr[errstr.length] = "- Вы не указали улицу :("
	
	if ('courier' == getCookie("h3[shipping]")) {
		metro = unescape(getCookie("h3[metro]"))
		if (!metro || (metro == 'null')) errstr[errstr.length] = "- Пожалуйста, укажите еще станцию метро"
		
		if (!checkTime()) errstr[errstr.length] = "- Пожалуйста, корректно укажите время, в которое вам удобно получить заказ"
		
	} else {
		flat = unescape(getCookie("h3[flat]"))
		house = unescape(getCookie("h3[house]"))
		if (!flat || (flat == 'null')) errstr[errstr.length] = "- Вы не указали вашу квартиру"
		if (!house || (house == 'null')) errstr[errstr.length] = "- Вы не указали номер дома"
	}
	if (errstr.length) {
		alert(errstr.join('\n'))
		return false
	}
	return true
}

/**
 * UNescape values filled in inputs
 */
function basketUnescapeStep1() {
	unescapeElements(
		new Array("surname", "firstname", "parentname", "phone", "email")
	)
}

/**
 * UNescape values filled in inputs
 */
function basketUnescapeStep2() {
	unescapeElements(
		new Array("postcode", "city", "region", "street", 
					"house", "metro", "notes")
	)
	var time = unescape(getCookie("h3[time]"))
	if (time = time.trim()) {
		time = time.split(".")
		if (time.length) {
			var i, val
			for (i = 0; i < 4; ++i) {
				if (i < time.length && !isNaN(val = parseInt(time[i]))) {
					if (val < 10) {
						time[i] = '0'+val.toString()
					}
				} else {
					time[i] = '00';
				}
				document.getElementById('time_'+i).value = time[i]
			}
		}
	}
}

/**
 * UNescape values filled in inputs
 */
function basketUnescapeStep3() {
	
}

/**
 * check time cookie
 */
function checkTime() {
	var time = unescape(getCookie("h3[time]"))
	var val
	if (time = time.trim()) {
		time = time.split(".")
		if (time.length) {
			var i, max
			for (i = 0; i < 4; ++i) {
				max = i%2 ? 60 : 24
				if (i < time.length) {
					if (isNaN(val = parseInt(time[i])) || val > max || max < 0) {
						return false
					}
				} else {
					return false
				}
			}
			
			// times must specify an interval
			var t1 = time[0]+time[1]
			var t2 = time[2]+time[3]
			if (t1 == t2) {
				return false
			}
			
			return true
		}
	}
	return false
}

/**
 * UNescape values in certain elements
 */
function unescapeElements(elements) {
	var i, el
	for (i in elements) {
		if (el = document.getElementById(elements[i])) {
			el.value = unescape(el.value)
		}
	}
}

/**
 * Remove product from basket;
 * Remove the corresponding row from the basket table
 */
function removeFromBasket(product_id, row) {
	if (confirm("Удалить продукт из корзины?")) {
		var totalNode  = document.getElementById('total_sum')
		var amountNode = document.getElementById('a'+product_id)
		var priceNode  = document.getElementById('p'+product_id)
		var amount     = myParseInt(amountNode.innerHTML)
		var b_hash     = basketCookie2Array()
		var i
		var new_b_hash = {}
		for (i in b_hash) {
			if (i != product_id) new_b_hash[i] = b_hash[i]
		}
		writeBasketCookie(new_b_hash)
		totalNode.innerHTML = eval(totalNode.innerHTML+"-"+(amount*priceNode.innerHTML))
		row.parentNode.removeChild(row)
		return false
	}
}