/**
 * zwraca literal obiektowy z parami zmiennych z podanego formularza
 * uwzglednia pola input, select, textarea 
 * 
 * @param HTMLObject f - formularz
 */
function get_form_vars(f)
{
	function vars(){}
	$(":input[name]", f).each(
			function()
			{
				input_type = $(this).attr("type");
				if ((input_type == "radio" || input_type == "checkbox"))
				{
					if (this.checked == true)
					{
						eval("vars.prototype." + $(this).attr("name") + " = $(this).val();");
					}
				}
				else
				{
					eval("vars.prototype." + $(this).attr("name") + " = $(this).val();");
				}
			}
		);
	return new vars();
}


produkt = {
	opcja_change: function(id_produkt)
	{
		$("#cena_produktu").html('<img src="' + base_url + 'img/ajax-loader.gif" alt="" /> ładuję...');

		var opcje = new Array();
		$('select[name^="id_wartosc"]').each(
			function()
			{
				opcje.push(this.value);
			}
		);

		$.post(base_url + "oferta/get_cena_produktu/" + id_produkt,
			{
				'id_wartosc[]': opcje
			},
			function(xml)
			{
				//$('#cena_produktu').html(html);
				$('#cena_produktu_id').empty().text($('cena', xml).text());
				$('#stara_cena_id').empty().text($('stara_cena', xml).text());
			},
			'xml'
		);
	},
	
	
	add_to_cart: function(form_obj)
	{
		var id_produkt = $("#id_produkt").val() * 1;
		
		if ((isNaN(id_produkt)) || (id_produkt < 1))
		{
			alert('Wybierz produkt')
			return false;
		}
		
		var ilosc = $("#do_koszyka_ilosc").val() * 1;
		
		if ((isNaN(ilosc)) || (ilosc < 1))
		{
			alert('Wybierz ilość')
			return false;
		}
		
		$("[name^=id_wartosc]").each(
				function()
				{
					if (this.value.length < 1)
					{
						alert('Błąd! Podana opcja nie ma wartości')
						return false;
					}
				}
			);
		
		return true;
	}
};


kamien = {
	id_grupa_nad: null,
	id_grupa: null,
	id_produkt: null,
	
	init: function(id_grupa_nad)
	{
		this.id_grupa_nad = id_grupa_nad;
		$("#kamien_selector").mouseout(
			function()
			{
				$("#kamien_selector_img").unbind('click');
				$("#kamien_selector").hide();
			}
		);
		
		var this_obj = this;
		$(".krok_1 .img").mouseover(function(){this_obj.kamien_over(this)});
	},
	
	kamien_over: function(obj)
	{
		var kamien_name = $("img", obj).attr('title');
		var obj_pos = $(obj).position();
		var this_obj = this;
		
		$("#kamien_selector_name").html(kamien_name);
		$("#kamien_selector_img")
			.css({'background-image': "url(" + $("img", obj).attr("src") + ")", "background-position": "-16px -16px"})
			.click(function(){this_obj.kamien_click(obj)});
		$("#kamien_selector").css({"top": obj_pos.top, "left": obj_pos.left}).fadeIn(300);
	},
	
	kamien_select: function(id_grupa)
	{
		this.kamien_click(document.getElementById("id_grupa_" + id_grupa));
	},
	
	kamien_click: function(obj)
	{
		this.id_grupa = obj.id.replace(/id_grupa_/, '');
		
		// obsluga selecta kolorow
		$("#select_id_grupa option[value=0]").remove();
		$("#select_id_grupa").val(this.id_grupa);
		
		$(".krok_1 .img").removeClass('kamien_selected');
		$(obj).addClass('kamien_selected');
		$(".krok_0 #kamienie_box_opis_produkt").empty();
		$(".krok_0 #kamienie_box_opis_grupa").html('<img src="' + base_url + 'img/ajax-loader.gif" alt="" /> ładuję...');
		$("#rozmiary_kamieni").html('<img src="' + base_url + 'img/ajax-loader.gif" alt="" /> ładuję...');
		$.post(base_url + "oferta/kamienie_kamien_click/" + this.id_grupa,
				function(xml)
				{
					$(".krok_0 #kamienie_box_opis_grupa").html($("opis_grupa", xml).text());
					var txt = '<select name="id_produkt" onchange="kamien.rozmiar_change(this);">';
					$("rozmiary rozmiar_item", xml).each(function(){
							txt += '<option value="' + $("id_produkt", this).text() + '">' + $("nazwa", this).text() + '</option>';
						});
					txt += '</select>';
					$("#rozmiary_kamieni").html(txt);
					$("#rozmiary_kamieni select").change();
					$("#kamien_selector").mouseout();
				}
			);
	},
	
	rozmiar_change: function(obj)
	{
		var this_obj = this;
		this.id_produkt = obj.value;
		$("#id_produkt").val(this.id_produkt);
		$("#cena_kamienia").empty();
		$("#opcje_kamieni").html('<img src="' + base_url + 'img/ajax-loader.gif" alt="" /> ładuję...');
		$.post(base_url + "oferta/kamienie_rozmiar_click/" + this.id_produkt,
				function(html)
				{
					$(".krok_3 h2").empty();
					$("#opcje_kamieni").html(html);
					this_obj.opcja_change();
				}
			);
	},
	
	opcja_change: function()
	{
		var opcje = [];
		$('select[name^="id_wartosc"]').each(
				function()
				{
					opcje.push(this.value);
				}
			);
		
		$(".krok_0 #kamienie_box_opis_produkt").html('<img src="' + base_url + 'img/ajax-loader.gif" alt="" /> ładuję...');
		$("#cena_kamienia").html('<img src="' + base_url + 'img/ajax-loader.gif" alt="" /> ładuję...');
		$.post(base_url + "oferta/kamienie_opcje_click/" + this.id_produkt,
				{'id_wartosc[]': opcje},
				function(xml)
				{
					$("#kamienie_box_opis_produkt").html($("opis_produkt", xml).text());
					$("#cena_kamienia").html($("cena_str", xml).text());
				}
			);
	}

};


function rand(n)
{
	return (Math.floor(Math.random() * n + 1));
}


function moneyFormat(value)
{
	value = Math.round(value * 100)/100;
	if (value == Math.floor(value))
	{
		value = value + ',00';
	}
	else
	{
		if (value * 10 == Math.floor(value * 10))
		{
			value = value + '0';
		}
	}
	value += '';
	return value.replace(/\./, ",").split("").reverse().join("").replace(/(\d{2})\,(\d{0,3})(\d{0,3})(\d{0,3})(\d{0,3})(\d{0,3})/, "$1,$2 $3 $4 $5 $6").split("").reverse().join("");
}


function checkRequiredFields(formObj)
{
	// sprawdzanie czy po naciśnięciu submit wymagane pola są wypełnione
	ok = true;
    $(formObj).find(".requiredField").each(function(){
			if (this.value === '')
	        {
          		ok = false;
          		//$(this).css("background", "#ff9");
        	}
        	else
        	{
          		//$(this).css("background", "#fff");
        	}
      	});
	if (ok)
	{
		return true;
	}
	alert('Nie wypełniono wszystkich wymaganych pól!');
    return false;
}




inits = {
	tdPointer_init: function(){
		$("tr.tr-pointer").each(
				function() {
					var url = $(this).attr("rel");
					$(this).children("td").each(
							function()
							{
								if (!$(this).hasClass("td-pointer-noclick"))
								{
									$(this).click(
											function() {
												window.location=url;
											}
										);
								}
							}
						);
					$(this).mouseover(
							function() {
								$(this).children("td").addClass("td-over");
							}
						);
					$(this).mouseout(
							function() {
								$(this).children("td").removeClass("td-over");
							}
						);
				}
			);
	},
	
	requiredField_init: function(){
		//$(".requiredField[type!='hidden']").after('<span class="redStar">*</span>');
		$(".requiredField[type!='hidden']").after('<img src="' + base_url + 'img/symbole/gwiastka.gif" alt="*" />');
		$("form").each(
				function()
				{
					if ($(":input", this).hasClass("requiredField"))
					{
						$(this).submit(function(){return checkRequiredFields(this);})
					}
				}
			);
	},


	
	
	lightBox_init: function ()
	{
		var groups = {};
		var groups_n = 0;
		var orig_rel = 'lightbox';
		// Create the groups
		$.each($('[rel*='+orig_rel+']'), function(index, obj){
			// Get the group
			var rel = $(obj).attr('rel');
			// Are we really a group
			if ( rel == orig_rel )
			{	// We aren't
				rel = groups_n; // we are individual
			}
			// Does the group exist
			if ( typeof groups[rel] == 'undefined' )
			{	// Make the group
				groups[rel] = [];
				groups_n++;
			}
			// Append the image
			groups[rel].push(obj);
		});
		// Lightbox groups
		$.each(groups, function(index, group){
			//$(group).lightBox();
			$(group).fancybox();
		});
		// Done
		return true;
	},



	datepicker_init: function()
	{
		$(".datepicker").datepicker();
	},
	
	
	treemenu_init: function()
	{
		$(".treeview_menu").each(
					function()
					{
						$(this).treeview({
								persist: "cookie",
			   					cookieId: "navigationtree_" + this.id,
								//control: $(".treecontrol", this),
								animated: "fast",
								collapsed: true
							});
					}
				);
	},


	tabs_init: function()
	{
		if ($(".kontener_zdjecia").length > 0)
		{
			$(".kontener_zdjecia").tabs();
		}
	},
	
	
	number_fields_init: function()
	{
		// ustaw pola rzeczywiste 
		$("input.real-number").realnumeric(2);
		
		// ustaw pola numeryczne naturalne
		$("input.natural-number").numeric();
	},
	
	
	search_fieldset_init: function()
	{
		$(".search_fieldset form").hide();
		$(".search_fieldset legend").each(
				 function()
				 {
				 	$(this).append(' <span style="font-size: 9px;">(kliknij)</span>');
				 	$(this).css("cursor", "pointer");
				 	$(this).click(
							function()
							{
								$(".search_fieldset form").toggle();
							}
						);
				 }
			);
	},
	
	
	mbox_init: function()
	{
		$(".mbox_message").effect("pulsate", { times: 2 }, 200);
		$(".mbox_error_message").effect("pulsate", { times: 2 }, 200);
	},
	
	
	all_inits: function()
	{
		this.requiredField_init();
		this.tdPointer_init();
		this.lightBox_init();
//		this.datepicker_init();
		this.treemenu_init();
		this.tabs_init();
		this.number_fields_init();
		this.search_fieldset_init();
		this.mbox_init();
	}
	
};


order = {
	calkowitaWartoscZamowienia: 0,
	kosztDostawy: 0,
	kosztPlatnosci: 0,
	etykieta: '',
	
	change_koszt_dostawy: function(kd, p_etykieta)
	{
		this.etykieta = p_etykieta;
		this.kosztDostawy = kd;
		this.fill_order_value_form();
	},
	
	change_koszt_platnosci: function(kp)
	{
		this.kosztPlatnosci = kp;
		this.fill_order_value_form();
	},
	
	fill_order_value_form: function()
	{
		var etykieta = '';
		var koszt_dostawy = 0;
		if (typeof this.calkowitaWartoscZamowienia != 'number')
		{
			return false;
		}
		
		if (typeof this.kosztDostawy != 'number')
		{
			return false;
		}
		
		if (typeof this.kosztPlatnosci != 'number')
		{
			return false;
		}
		
		var kp = this.kosztPlatnosci;
		if (this.kosztDostawy == 0)
		{
			kp = 0;
		}
		
		etykieta = moneyFormat(this.kosztDostawy) + ' pln';
		koszt_dostawy = this.kosztDostawy;
		if (this.kosztDostawy < 0)
		{
			etykieta = this.etykieta;
			koszt_dostawy = 0;
		}
		
		//$("#sum_koszt_dostawy").empty().append(moneyFormat(this.kosztDostawy));
		$("#sum_koszt_dostawy").empty().append(etykieta);
		$("#sum_koszt_platnosci").empty().append(moneyFormat(kp) + ' pln');
		$("#sum_c_wartosc").empty().append(moneyFormat(this.calkowitaWartoscZamowienia + koszt_dostawy + kp) + ' pln');
	},
	
	place_order: function(f)
	{
		sposob_dostawy = "";
		$("input[name=sposob_dostawy]").each(
			function() {
					if (this.checked)
					{
						sposob_dostawy = $(this).val();
					}
				}
		);
		
		if (sposob_dostawy.length < 1)
		{
			alert("Wybierz sposób dostawy!");
			return false;
		}

		sposob_platnosci = "";
		$("input[name=sposob_platnosci]").each(
			function() {
					if (this.checked)
					{
						sposob_platnosci = $(this).val();
					}
				}
		);
		
		if (sposob_platnosci < 1)
		{
			alert("Wybierz sposób płatności!");
			return false;
		}

		dowod_ksiegowy = "";
		$("input[name=dowod_ksiegowy]").each(
			function() {
					if (this.checked)
					{
						dowod_ksiegowy = $(this).val();
					}
				}
		);
		if (dowod_ksiegowy < 1)
		{
			alert("Wybierz rodzaj dowodu księgowego!");
			return false;
		}
		
		
		if ($("#accept_reg").attr("checked") != true)
		{
			alert("Musisz zaakceptować Regulamin sklepu!");
			return false;
		}
		
		$("#confirm_order_submit").hide().after('<p id="confirm_order_wait_txt"><img class="left" src="' + base_url + 'img/icon/ajax-loader.gif" alt="" /> proszę czekać, trwa składanie zamówienia...</p>');
		
		fv = get_form_vars(f);
		$.post(base_url + "order/place_order",
				fv, 
				function(xml)
				{
					pre = $("pre", xml).text();
					if (pre.length > 0)
					{
						alert(pre);
					}

					error = $("error", xml).text();
					if (error.length > 0)
					{
						alert(error);
						$("#confirm_order_wait_txt").remove();
						$("#confirm_order_submit").show();
						return false;
					}

					var form_action;
					form_action = $("form_action", xml).text();

					var add_form_data;
					add_form_data = $("add_form_data", xml).text();

					$("#confirm_order form").attr("action", form_action);
					$("#confirm_order form > #add_form_data").empty().prepend(add_form_data);
					$("#confirm_order form").submit();

					$("#confirm_order_wait_txt").remove();
					$("#confirm_order_submit").show();
				}
			);
		
		return false;
	}
}






// uruchamia kod po zaladowaniu dokumentu
$(document).ready(
		function()
		{
			// ukryj wszystkie elementy, ktore sa deafultowo ukryte- sa klasy hide_default
			$(".hide_default").hide();

			inits.all_inits();
			
			$("input[name='products_search']").click(function ()
			{
				this.value = ''; 
    		});

		}
	);
//koniec