/* VALIDATE FUNCTIONS */
function checkCartOptions(form)
{

	if (form["shipping_code"] && !checkRadio(form, "shipping_code", "Prosz\u0119 wybra\u0107 form\u0119 wysy\u0142ki", "shipping_code_1")) return false;
	return checkRadio(form, "payment_code", "Prosz\u0119 wybra\u0107 spos\u00f3 p\u0142atno\u015bci", "payment_code_1");
}

function checkAddressData(form)
{
	// 1st part
	var status = checkInput("ship_first_name","Podaj Imi\u0119") &&
	checkInput("ship_last_name","Podaj Nazwisko") &&
	checkInput("ship_address","Podaj Ulica") &&
	checkInput("ship_address2","Podaj Numer Domu") &&
	checkInput("ship_city","Podaj Miasto") &&
	checkInput("ship_zip","Podaj Kod Pocztowy") &&
	checkInput("ship_phone","Podaj Telefon Kontaktowy") &&	
	checkEmail("ship_email","Podaj Podaj prawid\u0142owy adres Email");
	if(!status) return false;
	
	// 2nd part
	if($("bill_vat").checked)
	{
		status = checkRadio(form, "bill_vat_type","Prosz\u0119 wybra\u0107 rodzaj faktury", "bill_vat_type_1") &&
		checkInput("bill_first_name","Podaj Imi\u0119, Nazwisko b\u0105 nazw\u0119 firmy") &&
		checkInput("bill_last_name","Podaj NIP") &&
		checkInput("bill_address","Podaj Ulica") &&
		checkInput("bill_address2","Podaj Numer Domu") &&
		checkInput("bill_city","Podaj Miasto") &&
		checkInput("bill_zip","Podaj Kod Pocztowy");
		if(!status) return false;
	}

	return checkRadio(form, "mil_agreement","Prosz\u0119 wyrazi\u0107 zgod\u0119 na przetwarzanie danych osobowych", "mil_agreement");
}


function changeInvoiceStatus(input)
{
	if (!input) input = $("bill_vat");
	var vatContainer = $("invoice_container");
	var inputs = vatContainer.getElementsByTagName("input");
	if(input.checked)
	{
		Element.removeClassName($("fill_data"),"fill_hidden");
		Element.removeClassName(vatContainer,"vat_hidden");
	}
	else
	{
		Element.addClassName($("fill_data"),"fill_hidden");
		Element.addClassName(vatContainer,"vat_hidden");
	}
	for( var i = 0; i < inputs.length; i++ )
		if(inputs[i] != input)
		{
			if(input.checked) Element.removeClassName(inputs[i],"disabled");
			else Element.addClassName(inputs[i],"disabled");
			inputs[i].disabled = !input.checked;
		}
}

function copyAddressData()
{
	//if(confirm("Czy skopiowa\u0107 tak\u017Ce imi\u0119 i nazwisko?"))
	$("bill_first_name").value = $("ship_first_name").value + " " + $("ship_last_name").value;
	$("bill_address").value = $("ship_address").value;
	$("bill_address2").value = $("ship_address2").value;
	$("bill_city").value = $("ship_city").value;
	$("bill_zip").value = $("ship_zip").value;
}

/* RENDER FUNCTIONS */
function toolTip()
{
	var divCollection = document.getElementsByTagName("div");

	for( var i = 0; i < divCollection.length; i++ )
	{
		if( divCollection[i].className.indexOf("tooltip") != -1 ) 
		{
			divCollection[i].onmouseover = function() {	addClass(this,"hover"); this.parentNode.style.zIndex = 1; }
			divCollection[i].onmouseout = function() { removeClass(this,"hover"); this.parentNode.style.zIndex = 0; }
		}
	}
}

function hoverOptions()
{
	var optionsUl = document.getElementsByTagName("ul");

	for( var i = 0; i < optionsUl.length; i++ )
	{
		if( optionsUl[i].className.indexOf("checkout_options") != -1 ) 
		{
			var options = optionsUl[i].getElementsByTagName("li");
			for(var j = 0; j < options.length; j++)
			{
				options[j].onmouseover = function() { addClass(this,"hover");	}
				options[j].onmouseout = function() { removeClass(this,"hover"); }
			}
		}
	}
}

function updateOptions()
{
	var total = $("total_price");
	
	if(!total) return;
	
	var totalTop = $("total_top");
	var base = $("base_price");
	var discount = $("discount_price");
	var steps = $("checkout_steps");
	var billShip = $("bill_ship_price");
	var stepsContent = "<li class=\"first_child past\"><span>1. </span>Koszyk</li><li class=\"after_active\"><span>2. </span>Twoje Dane</li><li><span>3. </span>Podsumowanie</li>";
	//steps.innerHTML;
	
	var basePrice = base.innerHTML.replace(",",".");
	basePrice = parseFloat(basePrice);
	var discountPrice = (discount) ? discount.innerHTML.replace(",",".") : 0;
	discountPrice = parseFloat(discountPrice);
	
	updatePrices($("payment_options"));
	updatePrices($("shipping_options"));
	
	function updatePrices(container)
	{
		var options = container.getElementsByTagName("input");
		for(var i = 0; i < options.length; i++)
		{
			options[i].onclick = function()
			{
				// render
				for(var j = 0; j < options.length; j++)
					removeClass(options[j].parentNode.parentNode.parentNode.getElementsByTagName("span").item(2),"selected");
				addClass(this.parentNode.parentNode.parentNode.getElementsByTagName("span").item(2),"selected");
				
				// logic
				var paymentPrice = parseFloat(getPrice($("payment_options")));
				var shippingPrice = parseFloat(getPrice($("shipping_options")));
				var totalPrice =  discountPrice + paymentPrice + shippingPrice;

				// bill & ship price
				billShip.innerHTML = formatPrice(paymentPrice + shippingPrice,2);
				// total price
				total.innerHTML = formatPrice(totalPrice,2);
				// total top price
				if(totalTop) totalTop.innerHTML = total.innerHTML;
				
				//update steps
				if(container.id == "payment_options") updateSteps(this);
				
				// installments
				if(this.value.indexOf("instalments:") != -1)
					updateInstallments(this);
			}
		}
	}
	
	function getPrice(container)
	{
		var options = container.getElementsByTagName("input");
		for(var i = 0; i < options.length; i++)
			if(options[i].checked)
				return options[i].parentNode.parentNode.parentNode.getElementsByTagName("span").item(2).innerHTML.slice(0,-17).replace(",",".");;
		return 0;
	}
	
	function updateSteps(elem)
	{
		var code = elem.title;
		if(code.slice(0,12) == "platnoscipl:") setStepMode(1);
		else setStepMode(2);
	}
	
	function setStepMode(mode)
	{
		
		var lastSteps = (mode == 1) ? "<li><span>4. </span>P\u0142atno\u015B\u0107</li><li class=\"last_child\"><span>5. </span>Potwierdzenie</li>" :
			"<li class=\"last_child\"><span>4. </span>Potwierdzenie</li>";
		steps.innerHTML = stepsContent + lastSteps;
	}
	
}

function updateInstallments(option)
{
	var selectOption = option.parentNode.parentNode.getElementsByTagName("select")[0];
	var selected = selectOption.options[selectOption.selectedIndex];
	var tmp = selected.title.slice(6);
	tmp = tmp.split("/");
	var quantity = tmp[0];
	var percent = tmp[1];
	var total = parseFloat($("total_price").innerHTML.replace(",","."));
	var instalment = formatPrice( (total*(1+(percent/100)))  / quantity );
	
	var info = selectOption.parentNode.getElementsByTagName("div")[0];
	info.innerHTML = "<p><strong>Ilo\u015B\u0107 rat:</strong> "
				+ quantity
				+ "</p><p class='last'><strong>Przybli\u017Cona wysoko\u015B\u0107 raty:</strong> "
				+ instalment
				+ " z\u0142/m-c</p>"
}

function formatPrice(d,decimal)
{
	var d2 = Math.floor(d);
	var s = "" + ((d*100-d2*100));	
	if (s.length>2) s=s.substr(0,2);
	else while (s.length<2) s="0"+s;
	
	var s1=""+d2;
	//if (s1.length>3) s1=s1.substr(0,s1.length-3) + "." + s1.substr(s1.length-3,s1.length)
	return s1+","+s; 
}

function alertErros()
{
	var errorList = document.getElementById("error_list");
	if(!errorList) return;
	var msgErr = new String();

	var msgs = errorList.getElementsByTagName("li");
	for( var i = 0; i < msgs.length; i++ )
	{
		msgErr += msgs[i].innerHTML;
		if(i < msgs.length - 1) msgErr += ",<br>";
	}	
	myAlert(msgErr);
}

/* LOGIC */

function updateProductsInCart(button)
{
	if(!checkProductsToDelete())
	{
		if (button.form.moveToWish.checked) myAlert("Wybierz produkty do przeniesienia!");
		else myAlert("Wybierz produkty do usuni\u0119cia!");
		return false;
	}

	if (button.form.moveToWish.checked) 
	{
		button.form.action = "/sklep/lista_zyczen.xml";
		button.form.event.value='moveToWish'
	}
	else 
	{
		button.form.action = "/sklep/koszyk.xml";
		button.form.event.value='remove';
	}
	button.form.submit();
	return false;
	
	function checkProductsToDelete()
	{
		var table = document.getElementById("product_table");
		var inputs = table.getElementsByTagName("input");
		for( var i = 0; i < inputs.length; i++ )
			if(inputs[i].className.indexOf("mark_delete") != -1 && inputs[i].checked)
				return true;
		return false;
	}
}

function serviceProductCount()
{
	var productTable = document.getElementById("product_table");
	if(!productTable) return;
	
	var updateButton = $("cart_product_recalculate");
	
	var productCounts = productTable.getElementsByTagName("tbody").item(0).getElementsByTagName("input");
	for( var i = 0; i < productCounts.length; i++ )
	{
		productCounts[i].onkeypress = function(e)
		{
			e=e||window.event;
			if(e.keyCode==13)
			{
				if(updateProductsCount(updateButton))
				updateButton.form.submit();
				return false;
			}
		}
	}
}

function updateProductsCount(button)
{
	var invalidInput = false;
	if(!checkPrices())
	{
		alert("Niepoprawna wartosc w polu Ilo\u015a\u0107", invalidInput);
		return false;
	}
	button.form.event.value='recalculate';
	button.form.submit();
	return false;
	
	function checkPrices()
	{
		var table = document.getElementById("product_table");
		var inputs = table.getElementsByTagName("input");
		for( var i = 0; i < inputs.length; i++ )
			if(inputs[i].className.indexOf("product_quantity") != -1)
			{
				var value = parseInt(inputs[i].value);
				if(isNaN(value) || value < 0) { invalidInput = inputs[i]; return false; }
			}
		return true;
	}
}

function selectAdditionalAddress(callback)
{
    var windowwidth = 600
    var windowheight = 310;

    var left = (screen.width - windowwidth)/2;
    var top = (screen.height - windowheight)/2 - 18;
    
    var scrollbars = "no";
    
    var url = "/klub/moje_adresy.xml?r=" + Math.random();
    
    if (left<0) { scrollbars = "yes"; left = 32; windowwidth = screen.width - 2*left; }
    if (top<0) { scrollbars = "yes"; top = 32; windowheight =  screen.height - 2*top - 18; top = top - 18; }

	window.dialogArgs = new Object();
	window.dialogArgs.callback = callback;

    var win = window.open(url,"addAddr","toolbar=no,location=no,directories=no,"+
        "status=no,menubar=no,scrollbars=" + scrollbars + ",resizable=no,"+
        "copyhistory=no, width="+windowwidth+",height="+windowheight+",left=" + left + ",top=" + top);

	return false;
}

function onAddAddr(addr)
{
	if (!addr) return;
	$("ship_first_name").value = addr.firstName;
	$("ship_last_name").value = addr.lastName;
	$("ship_address").value = addr.address;
	$("ship_address2").value = addr.address2;
	$("ship_city").value = addr.city;
	$("ship_zip").value = addr.zip;
}

/* CHECKOUT CALCULATE OPTIONS */

function checkoutFunctions()
{
	setTimeout(serviceProductCount,0);
	setTimeout(alertErros,0);
	setTimeout(toolTip,0);
	setTimeout(hoverProducts,0);
	setTimeout(hoverOptions,0);
	setTimeout(updateOptions,0);
}

//addEvent(window,"load",checkoutFunctions);
