var portal = function() {
	function string(name) {
			var lang = {
				pl: {
					formempty:		"Nie wszystkie wymagane pola są uzupelnione.",
					formerror:		"Błąd podczas przesyłania formularza, prosimy spróbować ponownie za jakiś czas.",
					formok:			"Dziękujemy za przesłanie formularza.",
					formregerror:	"Musi zarezetować przynajmniej jeden pokój.",
					url:			"Default.aspx?Page=5"
				},


				ru: {
					formempty:		"Не все обязательные поля заполнены",
					formerror:		"Ошибка при отправке формуляра, просим попробовать отправить еще раз.",
					formok:			"Благодарим за отправку формуляра.",
					formregerror:	"Надо забронировать минимум один номер.",
					url:			"Default.aspx?Page=40"
				},


				en: {
					formempty:		"You have not filled in all the required fields",
					formerror:		"Error while sending the form, please try again later.",
					formok:			"Thank you for sending the form.",
					formregerror:	"You have to book at least one room.",
					url:			"Default.aspx?Page=75"
				}
			};


			var elements = document.getElementsByTagName("html");

			if (elements.length == 1) {
				return lang[elements[0].lang][name];
			}

			return false;
		};




	var galery = new function() {
			this.validate = function(divelement) {
					var anchroelements = divelement.getElementsByTagName("a");

					for (var i = 0; i < anchroelements.length; i++) {
						anchroelements[i].onclick = function() {
								openpicture(this.href);

								return false;
							};
					}
				};




			var openpicture = function(src) {
					if (windowpicture == null) {
						initializeobject();
					}


					if (windowpicture != null) {
						setvisible(true);


						var imageelements = windowpicture.getElementsByTagName("img");

						if (imageelements.lenght != 0) {
							imageelements[0].src = src;
						}
					}
				};


			var initializeobject = function() {
					windowpicture = document.getElementById("window-picture");

					if (windowpicture != null) {
						var anchorelements = windowpicture.getElementsByTagName("a");

						if (anchorelements.lenght != 0) {
							if (anchorelements[0].rel == "picture.close") {
								anchorelements[0].onclick = function() {
										setvisible(false);

										return false;
									};
							}
						}
					}
				};


			var setvisible = function(visible) {
					if (visible) {
						windowpicture.style.display = "block";

						dolphin.windows().setzindex(windowpicture);
					}
					else {
						windowpicture.style.display = "none";
					}
				};


			var windowpicture = null;
		};




	var loader = new function() {
			this.close = function() {
					var element = document.getElementById("loader");

					if (element != null) {
						element.style.display = "none";
					}
				};


			this.open = function() {
					var element = document.getElementById("loader");

					if (element != null) {
						element.style.display = "block";
					}
				};


			this.isBusy = function() {
					var element = document.getElementById("loader");

					if (element != null) {
						if (element.style.display == "block") {
							return true;
						}
					}

					return false;
				};
		};




	function list(next, prev, parent) {
			var parent = parent;


			var change = function(selected) {
					var comments = parent.getElementsByTagName("div");

					for (var i = 0; i < comments.length; i++) {
						comments[i].style.display = "none";
						
						if (i == selected) {
							comments[i].style.display = "block";
						}
					}


					try {
						comments[selected + 1].style.display = "block";
					}
					catch (error) { }


					if (selected > 0 && selected < comments.length - 2) {
						prev.style.display = "block";
						next.style.display = "block";
					}
					else {
						if (selected == 0) {
							prev.style.display = "none";
						}
						
						if (selected >= comments.length - 2) {
							next.style.display = "none";
						}
					}
				};


			var page = 0;




			this.prev = function() {
					try {
						change(--page);
					}
					catch (error) { }

					return false;
				};


			this.next = function() {
					try {
						change(++page);
					}
					catch (error) { }

					return false;
				};


			prev.onclick = this.prev;
			next.onclick = this.next;


			change(0);
		};




	var form = new function() {
			this.validate = function(node) {
					var handler = new function() {
						this.onCheckedElement = function(element) {
							var obligation = this.obligation(element);

							if (obligation != false) {
								if (element.checked != "checked") {
									this.selectElement(element, true);

									this.error = true;
								}
								else {
									this.selectElement(element, false);

									this.param[obligation] = element.value;
								}
							}
							else {
								this.param[element.name] = element.value;
							}
						};


						this.onValueElement = function(element) {
							var obligation = this.obligation(element);

							if (obligation != false) {
								if (element.value.length == 0) {
									this.selectElement(element, true);

									this.error = true;
								}
								else {
									this.selectElement(element, false);

									this.param[obligation] = element.value;
								}
							}
							else {
								this.param[element.name] = element.value;
							}
						};


						this.obligation = function(element) {
							if (element.name.substring(0, 1) != "!") {
								return false;
							}

							return element.name;
						};


						this.selectElement = function(element, select) {
							if (select) {
								element.style.borderColor = "rgb(78,56,48)";
							}
							else {
								element.style.borderColor = "rgb(255,255,255)";
							}
						};


						this.param = {};


						this.error = false;
					};


					dolphin.form().read(node, handler);


					return new function() {
							this.param = handler.param;
							this.error = handler.error;
						};
				};




			this.send = function(node, url) {
					var validate = this.validate(node);

					if (validate.error) {
						alert(string("formempty"));
					}
					else {
						loader.open();

						dolphin.request(url, validate.param, function(sender, args) {
								if (sender.responseText == "1") {
									alert(string("formok"));

									dolphin.form().clear(node);
								}
								else {
									alert(string("formerror"));
								}

								loader.close();
							});
					}

					return false;
				};
		};




	return {
		galery: function(divelement) {
				galery.validate(divelement);
			},


		comment: function() {
				return {
						form: function(formelement) {
								if (loader.isBusy() == false) {
									form.send(formelement, "Default.aspx?Page=3");
								}

								return false;
							},
							
							
						list: function(next, prev, root) {
								new list(next, prev, root);
							}
				};
			},


		booking: function() {
				function validate(formelement) {
						var isok = false;


						var inputelements = formelement.getElementsByTagName("input");

						for (var i = 0; i < inputelements.length; i++) {
							if (inputelements[i].name.substring(0, 4) == "Room") {
								if (inputelements[i].value > 0) {
									isok = true;
								}
							}
						}


						for (var i = 0; i < inputelements.length; i++) {
							if (inputelements[i].name.substring(0, 4) == "Room") {
								if (isok) {
									inputelements[i].style.borderColor = "rgb(255,255,255)";
								}
								else {
									inputelements[i].style.borderColor = "rgb(78,56,48)";
								}
							}
						}


						if (isok) {
							if (form.validate(formelement).error) {
								alert(string("formempty"));

								return false;
							}

							return true;
						}
						else {
							alert(string("formregerror"));

							return false;
						}
					};


				return {
						apartamenty: function(form) {
										try {
											var inputs = form.getElementsByTagName("input");


											var changed = function() {
												try {
													if (this.checked == "unchecked" || !this.checked) {
														this.checked = true;
													}


													for (var i = 0; i < inputs.length; i++) {
															if (inputs[i].type == "checkbox" && inputs[i] != this) {
																inputs[i].checked = false;
															}
														}
												}
												catch (error) {
													alert(error);
												}
											};


											for (var i = 0; i < inputs.length; i++) {
												if (inputs[i].type == "checkbox") {
													inputs[i].onchange = changed;
												}
											}
										}
										catch (error) {
											alert(error);
										}
							},


						rooms: function(pension, form) {
								dolphin.request(string("url"), {Pension: pension}, function(sender, args) {
										form.innerHTML = sender.responseText;
										
										
										try {
											var inputs = form.getElementsByTagName("input");


											var changed = function() {
												try {
													if (this.checked == "unchecked" || !this.checked) {
														this.checked = true;
													}


													for (var i = 0; i < inputs.length; i++) {
															if (inputs[i].type == "checkbox" && inputs[i] != this) {
																inputs[i].checked = false;
															}
														}
												}
												catch (error) {
													alert(error);
												}
											};


											for (var i = 0; i < inputs.length; i++) {
												if (inputs[i].type == "checkbox") {
													inputs[i].onchange = changed;
												}
											}
										}
										catch (error) {
											alert(error);
										}
									}
								)
							},


						step1: function(form) {
								if (loader.isBusy() == false) {
									if (validate(form)) {
										return true;
									}
								}

								return false;
							},


						step2: function(form) {
								if (loader.isBusy() == false) {
									if (validate(form)) {
										return true;
									}
								}

								return false;
							}
					};
			}
		};
}();

