function Inoce() {
	
	this.initialize = function() {
		this.allowPlacing = false;
		this.resized = null;
		this.lock = false;
		this.fieldToFill = null;
		
		/**
		 * Przechowuje dane dotyczące połorzenia i rozmiaru wszystkich widgetów 
		 * związanych z danym układu
		 */
		this.blocks = [];
		/**
		 * Przechowuje meta informacje związane z danym układem
		 */
		this.meta = [];
		/**
		 * Tablica do przechowywania miejca w którym została rzycisnieta mysz
		 * (potrzeben do przesuwania widgetów tak aby wiedziec o ile zmienia sie 
		 *  ich poczatkowe położenie)
		 */
		this.mouseClicked	= [];
		this.offsetWidth	= null;
		this.offsetHeight	= null;
		this.cols			= null;
		/**
		 * Tablica do przechowywania danych związanych z konkretnym układem
		 * (kategoria, jezyki, waluta)
		 */
		this.schemeData		= [];
		this.moving = null;
		/**
		 * Zmienna pomocnicza przy tworzeniu nowego układu, okresla czy ma 
		 * nastapić tez zaimportowanie wszystkich widgetów oraz ustawien z ukladu
		 * który aktualnie przeglądamy do nowego układu
		 */
		this.isNewWithoutCopy = false;
		
		this.slider = null;
		
		this.colorPaletteValueToInput = "";
	};
	
	
	
	this.deleteScheme = function(docId) {
		if(confirm(	"Usunąc układ ?\n" +
					"Wszystkie dane zostaną utracone")) {
			if (confirm("Usunąc trwale ?")) {
				xajax_deleteScheme(docId, true);
			} else {
				xajax_deleteScheme(docId);
			}
		}
	};
	
	this.showPalette = function (id, object, changeToHex) {
		//console.log(arguments[1]);
		this.colorPaletteValueToInput = object;
		if (changeToHex) {
			xajax_loadColorsPalette(id, object.value, true);
		} else {
			xajax_loadColorsPalette(id, object.value);
		}
	};
	
	this.drawColorPallete = function() {
		//console.log($('colorPalettePreview').innerHTML);		
		var fragment	= document.createDocumentFragment();
		
		var table		= fragment.appendChild(document.createElement("table"));
		var tbody		= table.appendChild(document.createElement("tbody"));
		table.style.margin = "0px";
		table.style.borderCollapse = "collapse";
		
		var color = 255;
		var rgb = [255, 0, 0];
		for (var z = 0; z <= 128; z += 4) {	
			var tr = tbody.appendChild(document.createElement("tr"));

			rgb[0] = color;
			rgb[1] = 255 - rgb[0];
			rgb[2] = rgb[1];
			
			var index = 0;

			for (var i = 3; i--; ) {
					index = (index + 1) % 3; 
				var prevIndex = (index + 2) % 3;
				var nextIndex = (index + 1) % 3;
				var min = Math.min(rgb[prevIndex], rgb[nextIndex]);
				var max = Math.max(rgb[prevIndex], rgb[nextIndex]);
				var j;
				var td;
				
				for (j = 17; j--; ) {
					//console.log(rgb);
					td = tr.appendChild(document.createElement("td"));
					td.title = rgb.join(",");
					if (Prototype.Browser.IE) {
						td.attachEvent('onclick', this.setPalleteColorEvent);
					} else {
						td.addEventListener('click', this.setPalleteColorEvent, false);
					}
					td.style.backgroundColor = "RGB(" + rgb.join(",") + ")";
					td.style.width = "1px";
					rgb[index] += 15;
					if (rgb[index] > max) {
						rgb[index] = max;
					}
				}
				//console.log("prev "  +  rgb[prevIndex]);
				for (j = 17; j--; ) {
					//console.log(rgb);
					td = tr.appendChild(document.createElement("td"));
					td.title = rgb.join(",");
					if (Prototype.Browser.IE) {
						td.attachEvent('onclick', this.setPalleteColorEvent);
					} else {
						td.addEventListener('click', this.setPalleteColorEvent, false);
					}
					td.style.backgroundColor = "RGB(" + rgb.join(",") + ")";
					td.style.width = "1px";
					rgb[prevIndex] -= 15;
					if (rgb[prevIndex] < min) {
						rgb[prevIndex] = min;
					}
				}
				//console.log("END = " + rgb)		
			}
			
			if (color > 127 ) {
				color -= 4;
				if (color < 127) {
					color = 127;
				}
			}
		}
		
		$('colorPalettePreview').appendChild(fragment);	
	};
	
	this.countGrayness = function() {
		var value = $('colorPaletteGrayness').style.backgroundColor;
		
		var fragment = document.createDocumentFragment();
		var table = fragment.appendChild(document.createElement("table"));
		table.style.borderSpacing = "0px";
		value = value.substr(4, value.length - 5);
		
		//console.log(value.split(", "));
		for (var i = 30; i--; ) {
			var tr = table.appendChild(document.createElement("tr"));
			var td = tr.appendChild(document.createElement("td"));
			td.style.width="10px";
			td.style.backgroundColor = "white";
		}
		
		$('colorPaletteGrayness').appendChild(fragment);
	};
	
	this.setPalleteColorEvent = function() {
		if (Prototype.Browser.IE) {
			$('colorPaletteGrayness').style.backgroundColor = 
										event.srcElement.style.backgroundColor;
		} else {
			$('colorPaletteGrayness').style.backgroundColor = 
													this.style.backgroundColor;
		}
	};
	
	this.setPaletteColorPreview = function (value) {
		$('colorPaletteGrayness').style.backgroundColor = value;
	};
	
	this.allowSliderToMove = function(object, e) {
		if (this.slider === null) {
			this.slider = object.id;
			this.mouseClicked.y = e.screenY;
			this.blocks.top = $(this.slider).offsetTop;
		}
	};
	
	this.sliderSetPosition = function(object, e) {
		return;
		/*
		var slider = object.next();
		console.log(e.screenY - object.offsetParent.offsetTop - 180);
		console.log(object.offsetParent.offsetTop);
		slider.style.top = (e.screenY - object.offsetParent.offsetTop - 180) + "px";
		console.log(slider.style.top);
		*/
	};
	
	this.sliderMove = function(e) {
		if (this.slider !== undefined) {
			var y	= (e.screenY - this.mouseClicked.y);
			var top = this.blocks.top  + y;
			
			if (top > 349) {
				top = 349;
			} else if (top < 19) {
				top = 19;
			}
			if ($(this.slider)) {
				$(this.slider).style.top = top + 'px';
			}
		}
	};
	
	this.sliderStop = function() {
		if (this.slider !== undefined) {
			this.slider = null;
			this.mouseClicked.y = null;
			this.blocks.top	= null; 
		}
	};
	
	this.closePalette = function (value) {
		//console.log(arguments);
		$('colorsPalette').style.display = "none";
		if (value.match("rgb")) {
			value = value.substr(4, value.length - 5);
			if (Prototype.Browser.IE) {
				value = value.split(",");
			} else {
				value = value.split(", ");
			}
			var result = "";
			for (var i = 0; i < value.length; ++i) {
				var tempNumber = parseInt(value[i], 10);
				var tempResult= tempNumber.toString(16);
				if (tempResult.length < 2) {
					tempResult = "0" + tempResult.toUpperCase();
				}
				result += tempResult;
			}
			//console.log(result);
			value = "#" + result;	
		}
		this.colorPaletteValueToInput.value = value;
		this.newWidgetStyle(this.colorPaletteValueToInput);
	};
	
	this.setFieldToFill = function(form, name) {
		var fieldToFill = null;
		$A(form.elements).each(function (element) {
			if (element.name == name) {
				fieldToFill = element;
			}
		});
		this.fieldToFill = fieldToFill;
	};
	
	this.fillField = function(form) {
		var temp = null;
		for (i = 0; i < form.elements.length - 1; i++) {
			if (form[i].checked === true) {
				temp = form[i].value;
				break;
			}
		}
		this.fieldToFill.value = temp;
		$('layoutsHeaderPropForm').style.display = "none";
		this.newWidgetStyle(this.fieldToFill);
	};
	
	this.loadLayoutsTheme = function(data) {
		for(var key in data) {
//			console.log(key + " = " + data[key]);
			if (key.indexOf("#") != -1 && key.indexOf(" ") == -1) {
				var id = key.substr(1);
				if ($(id) != null) {
					eval("$('" + id + "').setStyle(" + data[key] + ")");
				}
			} else {
				if (Prototype.Browser.IE &&  navigator.appVersion.include('MSIE 6')) {
					if (key == "#bookmarksMenuList .activeBookmark"	|| 
						key == "#bookmarksMenuList .inactiveBookmark") {

						if ($('bookmarksMenuList') !== undefined ) {
							if ($('bookmarksMenuList').style.borderBottomStyle != "none" &&
								$('bookmarksMenuList').style.borderBottomWidth != "0px" ) {
								
								if ($('bookmarks').style.backgroundImage == "none") {
									var number = $$("#bookmarksMenuList .activeBookmark span")[0].style.borderLeftWidth;
									number = (parseInt(number.substr(0, number.length - 2), 10) - 1) * 2;
									number = number <= 0 ? 1 : number;
									var tempNumber;
									var add;
									if (key == "#bookmarksMenuList .inactiveBookmark") {
										tempNumber = $$("#bookmarksMenuList .inactiveBookmark span")[0].style.borderLeftWidth;
										tempNumber = parseInt(tempNumber.substr(0, tempNumber.length - 2), 10);
										add = 5 - tempNumber;
										number += add;	
									} else if (key == "#bookmarksMenuList .activeBookmark") {
										tempNumber = $$("#bookmarksMenuList .activeBookmark span")[0].style.borderLeftWidth;
										tempNumber = parseInt(tempNumber.substr(0, tempNumber.length - 2), 10);
										add = 5 - tempNumber;
										number += add;	
									} 
									data[key] = "{top: '" + number + "'}";
								} else {
									var temp = data[key];
									temp = temp.substr(temp.indexOf("'") + 1, temp.length - temp.lastIndexOf("'"));
									temp = parseInt(temp, 10) + 2;
									data[key] = "{top: '" + temp + "'}";
								}
							}
						}
					}
				}
//				console.log("$$('" + key + "').each( function(element) { element.setStyle(" + data[key] + "); } )");
				if ($$(key).length > 0) {
					eval("$$('" + key + "').each( function(element) { element.setStyle(" + data[key] + "); } )");
				}
			}			
		}
		
		if (Prototype.Browser.IE && $('bookmarksMenuList') !== undefined) {
			var padding = $('bookmarksMenuList').style.paddingBottom;
			if (padding == "5px") {
				$('bookmarksMenuList').style.paddingBottom = "2px";
			}
		}
	};
	
	
	this.newWidgetStyle = function(object) {
//		console.log(object);
//		console.log(object.value)
		if (object.value == "NotSelect" || object.className.match("layoutValue")) {
			return;
		}
		
		var additionalName =  object.parentNode.parentNode.name;
		
		var widget = document.getElementsByClassName("demo" + additionalName)[0];
		if (widget === undefined) {
			return;
		}
		
		var name = object.parentNode.id + object.name;
		var value = object.value;
		
//		console.log(name);
		
		var auxilary = function(id, style, value) {
//			console.log(arguments);
			
			var selector = "elements[i].style.";
				
			if (value.match("Grafika")) {
				value = value.substr(0, value.indexOf("Grafika")) + "g" +
						value.substr(value.indexOf("Grafika") + 1);
			}
			
			if (id.match("human") || id.match("calendar") || style == "src") {			
				selector = "elements[i].";
			}
			
			if (style.match("fontDecoration")) {
				style = "textDecoration";
			}

			var elements = $A(widget.getElementsByClassName(id));

			for (var i = 0; i < elements.length; ++i) {
//				console.log(elements[i]);
//				console.log(selector + style + "='" + value + "';");
				if (elements[i].className.match("searchButton") && id != "searchButton") {
					continue;
				}
				eval(selector + style + "='" + value + "';");
			}
		};
		
		var aux2 = function (name, value) {
			name = name.substr(0, name.indexOf("Background")) + "Color";	
			value = "%23" + value.substr(1);
			
			var img  = widget.getElementsByClassName('imgOcena')[0];
			var src = img.src;
			
			var befor = src.substr(0, src.indexOf(name) + name.length + 1);
			var after = src.substr(src.indexOf(name) + name.length + 10);
		
			img.src = befor + value + after;
		};
		
		if (name.match("Value")) {
			name = name.substr(0, name.indexOf("Value"));
		}
		
		if (name.match("bar") || name.match("grid")) {
			aux2(name, value);
		} else if (name.match("Font")) {
			var style = "f" + name.substr(name.indexOf("Font") + 1);
			name = name.substr(0, name.indexOf("Font"));
	
			if (style.match("NotSelect")) {
				style = style.substr(0, style.indexOf("NotSelect"));
			}
			if (style.match("Color")) {
				style = "c" + style.substr(style.indexOf("Color") + 1);
			}
			
			if (style.match("Size")) {
				value = value + "px";
			}
			
			auxilary(name, style, value);
			
			if (name.match("description") && Prototype.Browser.IE) {
				auxilary("ieBugLabel", style, value);
			}
		} else if (name.toLowerCase().match("background")) {
				var temp = name;
				name = name.substr(0, name.indexOf("Background"));
				if (name == "") {
					name = additionalName.charAt(0).toLowerCase() +
							additionalName.substr(1);
				}
				if (temp.match("Picture")) {
					auxilary(name, "backgroundColor", "");
					
					if (name.toLowerCase() == additionalName.toLowerCase()) {
						auxilary(name + "BackgroundImage", "src", value);
						auxilary(name + "BackgroundImage", "visibility", "visible");
					} else {
						value = "url(" + value + ")";
						auxilary(name, "backgroundImage", value);
					}
				} else {
					auxilary(name + "BackgroundImage", "src", "");
					auxilary(name, "backgroundImage", "");
					auxilary(name, "backgroundColor", value);
				}

		} else if(name.match("Corner")) {
				if (name.match("Picture")) {
					name = name.substr(0, name.indexOf("Picture"));
					value = "url(" + value + ")";
					auxilary(name, "backgroundColor", "");
					auxilary(name, "backgroundImage", value);
				} else {
					auxilary(name, "backgroundImage", "");
					auxilary(name, "backgroundColor", value);
				}
		} else if (name.match("Picture")) {
				name = name.substr(0, name.indexOf("Picture"));
				auxilary(name, "src", value);
		}
	};
	
	this.dodajPole = function(event) {
		if(inoce.allowPlacing) {	
			var bookmarkId = location.search.split("&");
				for (var o = 0; o < bookmarkId.length; o++) {
					var m;
					if (m = bookmarkId[o].match(/.*=(\d+)/)) {
					 	bookmarkId = m[1];
					 	break;
					}	
				}
				
			var obj;
			if (Prototype.Browser.IE) {
				obj = event.srcElement;
			} else {
				obj = this;
			}
			
			var top = obj.id.substr(2, obj.id.lastIndexOf("_") - 2); 
			var left = obj.id.substr(obj.id.lastIndexOf("_") + 1);

			top  = parseInt(top, 10) * 10;
			left = parseInt(left, 10) * 10;
			
			obj.innerHTML = '<div id="dodajWidget" style="position:absolute; z-index: 200;">' + 
							 '<p style="width: 160px; height: 35px; text-align: center; font-family: verdana; font-size: 20px; ' + 
							 'cursor: pointer; background: url(/SR/grafika/inoce_nowy_widget.png) no-repeat; padding: 5px 0 0 35px"' +
							 'onclick="$(\'dodajWidget\').style.display = \'none\';' + 
							 'xajax_loadWidgetsMenu(' + bookmarkId + ', ' + top + ', ' + left + ');' + 
							 '">dodaj widget</p></div>';	
		}
		inoce.allowPlacing = false;		
	};
	
	this.allowPlacingF = function() {
		this.allowPlacing = true;
	};
	
	this.mouseOverTd = function(event) {		
		if(inoce.allowPlacing === true) {
			if (Prototype.Browser.IE) {
				var obj = event.srcElement;
				obj.style.backgroundColor = 'red';
			} else {
				this.style.backgroundColor = 'red';
			}
		}
	};
	
	this.mouseOutTd = function(event) {
		if(Prototype.Browser.IE) {
			var obj = event.srcElement;
			obj.style.backgroundColor = 'transparent';
		} else {
			this.style.backgroundColor = 'transparent';
		}
	};
	
	this.allowMoving = function(object, e) {		
	    if (this.moving === null) {
			this.moving = object.id;
			this.blocks.type = object.className;
			this.mouseClicked.x = e.screenX;
			this.mouseClicked.y = e.screenY;	
			this.blocks.top = $(this.moving).offsetTop;
			this.blocks.left = $(this.moving).offsetLeft;
		}
	};
	
	
	/**
	 * Funkcja która przesuwa widget w odpowiednie miejsce w odpowiedzi na ruch myszki 
	 * @param e mousemove event
	 */
	this.mouseMove = function(e) {
		if (this.moving) {		
//			console.log(this.moving);
			var x = (e.screenX - this.mouseClicked.x);
			var y = (e.screenY - this.mouseClicked.y);
			
			$(this.moving).style.left = this.blocks.left + x + 'px';		
			$(this.moving).style.top = this.blocks.top  + y + 'px';		
		}		
	};
	
	this.autoHeight = function(textarea, event) {
		var str = textarea.value;
		var length = str.length;
		event.charCode === 0 ? length -= 1 : length += 1;
		
		if(event.keyCode == 13) {
			str += "\n";	
			textarea.rows = textarea.rows + 1;
			textarea.parentNode.style.height = textarea.offsetHeight + 2 + "px";
		}

		var newRowsCount = parseInt(length / textarea.cols, 10);
		var tempArray = [];
		tempArray.type = "Text";
		tempArray.cols = textarea.cols;
		tempArray.width  = textarea.parentNode.offsetWidth;
		tempArray.height = textarea.parentNode.offsetHeight;
		
		if (length % textarea.cols == 1 && length != 1) {
			str += "\n";
			textarea.rows = newRowsCount + 1;
			tempArray.rows = newRowsCount + 1;
			textarea.parentNode.style.height = textarea.offsetHeight + 2 + "px";
			xajax_saveWidgetSize(textarea.parentNode.id, tempArray);
		} else if (length % textarea.cols === 0 && length !== 0) {
			textarea.rows = newRowsCount;
			tempArray.rows = newRowsCount;
			textarea.parentNode.style.height = textarea.offsetHeight + 2 + "px";
			xajax_saveWidgetSize(textarea.parentNode.id, tempArray);
		}
	};
	
	this.words = function(text) {
		for (var i = 0; i < text.length; i++) {
			console.log("[" + text[i] + "] ");
		}
	};
	
	/**
	 * Funkcja która zapisuje nowe połorzenie widgetu w tablicy blocks po zmianie połorzenia
	 * zaincjalizownego przez uzytkownika
	 */
	this.stopMoving = function() {
		if(this.moving) {
			$(this.moving).style.left	= ($(this.moving).offsetLeft - $(this.moving).offsetLeft % 10 ) + 'px';		
			$(this.moving).style.top	= ($(this.moving).offsetTop  - $(this.moving).offsetTop % 10 )  + 'px';	
			
			this.blocks.left = $(this.moving).offsetLeft - $(this.moving).offsetLeft % 10;
			this.blocks.top	= $(this.moving).offsetTop  - $(this.moving).offsetTop  % 10;
			
			this.mouseClicked.x = 0;
			this.mouseClicked.y = 0;
			
			xajax_saveWidgetPosition(this.moving, this.blocks);
			this.moving = null;
		}
	};
		
	this.finishMovingOnClick = function(e) {	
		if(this.moving) {
			$(this.moving).style.cursor = 'default';
			$(this.moving).style.border = 'dotted lightgray 1px';
			this.moving = null;
		}
	};
	
	this.domenChange = function(docId, object) {
		xajax_domenChange(docId, object[object.selectedIndex].value, object[object.selectedIndex].innerHTML);
	};
	
	this.confirmDomenChange = function (docId, value, name, oldValue) {
		if (confirm("Podana domena jest już uzywana, nadpisac wartosc ?") === true) {
			xajax_domenChange(docId, value, name, true); 
		} else {
			var options = $('domenSelected').getElementsByTagName('option');
			for(var i = options.length; i--; ) {
				if (options[i].value == oldValue) {
					options[i].selected = "selected";
					break;
				}
			}
			
		}
	};
	
	this.schemeMenu = function() {
		$('schemeMenu').style.display = "block";
		$('disableBackground').style.display = "block";	
	};
	
	this.newTheme = function() {
		$('newTheme').style.display = "block";
		$('disableBackground').style.display = "block";	
	};
	
	this.saveAsTheme = function() {
		$('saveAsTheme').style.display = "block";
		$('disableBackground').style.display = "block";	
	};
	
	this.setMetaMenu = function(id) {
		$('setMetaMenu').style.display = "block";
		$('disableBackground').style.display = "block";
		
		xajax_loadMeta(id);
	};
	
	this.submitNewThemeForm = function(form, userId) {
		if (form.themeName.value != "") {
			xajax_addNewTheme(form.themeName.value, userId);
		}
	};
	
	this.saveAsThemeForm = function(form, userId) {
		if (form.themeName.value != "") {
			xajax_saveAsTheme(form.themeId.value, form.themeName.value, userId);
		}
	};
	
	/**
	 * Funkcja do aktywacji lub deaktywacji pół w formularzu do zmiany własćiwości
	 * układu (jeżeli użytkownik zaznaczy wszystko to inne pola do pojedyńczego 
	 * zaznaczenia się deaktywuja i vv)
	 * @param id identyfikator 'div-u' w którym znajdują się pola do aktywacji lub deatywacji
	 * @param select określa czy pola mają być aktywowane czy deaktywowane (false, true)
	 */
	this.selectAll = function(id, select) {
		var disable;
		if (select === true) {
			disable = "disabled";
		} else {
			disable = "";
		}	
		
		$A($(id).childNodes).each(function (child) {
			if (child.nodeName == "INPUT") {
				child.disabled = disable;	
			}
		});
		
		if (id == "schemeSelectLang") {			
			var inputs = $('schemeMenuNames').getElementsByTagName("input");	
			var inputsValues = [];
						
			for(var i = inputs.length; i--; ) {
				var key = inputs[i].name;
				var value = inputs[i].value;
				inputsValues[key] = value;
			}
			
			$('schemeMenuNames').innerHTML = "";
			if (!select && id == "schemeSelectLang") {
				$A($('schemeSelectLang').childNodes).each(function (child) {
					if (child.type == "checkbox" && child.checked) {
						var tempValue = "";
						if (inputsValues['name' + child.value] !== undefined) {
							tempValue = inputsValues['name' + child.value];
						}
						$('schemeMenuNames').innerHTML += '<div style="margin-bottom: 5px;"><img src="/SR/grafika/flagi/' + child.value + '.gif" alt="{$lang}"/>' + " " + 
														  '<input 	type="text" id="name' + child.value + '" name="name' + child.value + '" value="' + tempValue + '" id="schemeName" ' + 
														  'style="width: 200px;margin-left: 5px;" maxlength="20" class="schemeName"/></div>';
					}
				});
			} else if (document.forms.schemeProp.lang[0].checked ) {
				$A($('schemeSelectLang').childNodes).each(function (child) {
					if (child.type == "checkbox") {
						var tempValue = "";
						if (inputsValues['name' + child.value] !== undefined) {
							tempValue = inputsValues['name' + child.value];
						}
						$('schemeMenuNames').innerHTML += '<div style="margin-bottom: 5px;"><img src="/SR/grafika/flagi/' + child.value + '.gif" alt="{$lang}"/>' + " " + 
														  '<input 	type="text" id="name' + child.value + '" name="name' + child.value + '" value="' + tempValue + '" id="schemeName" ' + 
														  'style="width: 200px;margin-left: 5px;" maxlength="30" class="schemeName"/></div>';
					}
				});
			}
			
			$A($('schemeMenuNames').childNodes).each( function (child) {
				child = child.childNodes[1];
				if (child.type == "text" ) {
					child.value = "";
				}
			});
			
			jQuery(".schemeName").bind("keyup", 
					function() {
				var id = "lang_" + this.id.substr(4);
				var obj = jQuery("#" + id);
				
				if (this.value !== "") {
					obj.attr("checked", "checked");
				} else {
					obj.attr("checked", "");
				}
			});
		}	
	};
	
	this.servedLang = function(object) {

		var inputs = $('schemeMenuNames').getElementsByTagName("input");	
			var inputsValues = [];
						
			for(var i = inputs.length; i--; ) {
				var key = inputs[i].name;
				var value = inputs[i].value;
				inputsValues[key] = value;
			}
		
		$('schemeMenuNames').innerHTML = "";
		
		$A($('schemeSelectLang').childNodes).each(function (child) {
			if (child.type == "checkbox" && child.checked) {
				var tempValue = "";
				if (inputsValues['name' + child.value] !== undefined) {
					tempValue = inputsValues['name' + child.value];
				}
				$('schemeMenuNames').innerHTML += '<div style="margin-bottom: 5px;"><img src="/SR/grafika/flagi/' + child.value + '.gif" alt="{$lang}"/>' + 
												  '<input 	type="text" id="name' + child.value + '" name="name' + child.value + '" value="' + tempValue + '" id="schemeName" ' + 
												  'style="width: 200px;margin-left: 5px;" maxlength="20" class="schemeName"/></div>';
			}
		});
	};
	
	/**
	 * Resetuje pola formularza do zmiany własciwości układu na standartowe ustawienie
	 * (wszystkie pola do samodzielnego wyboru są deaktwne, zaznaczone są opcje 'Wszystkie')
	 */
	this.clearSchemeData = function(load) {
		var inputs = $('schemeMenuNames').getElementsByTagName("input");
		var i;
		if (inputs.length > 1) {
			for (i = inputs.length; i--; ) {
				inputs[i].value = "";
			}
		}
		
		$('lang_all').checked = true;
		this.selectAll('schemeSelectLang', true);
		inputs = $('schemeSelectLang').getElementsByTagName("input");
		for (i = inputs.length; i--; ) {
			if (inputs[i].id != "lang_pl") {
				inputs[i].checked = false;		
			}
		}

		$('category_all').checked = true;		
		inputs = $('schemeSelectCategory').getElementsByTagName("input");
		for (i = inputs.length; i--; ) {
			inputs[i].checked = false;		
			inputs[i].disabled = "disabled";
		}

		$('currency_all').checked = true;
		inputs = $('schemeSelectCurrency').getElementsByTagName("input");
		for (i = inputs.length; i--; ) {
			if (inputs[i].id != "currency_1") {
				inputs[i].checked = false;		
			}
			inputs[i].disabled = "disabled";
		}

		this.schemeData.copyElements = null;
		this.isNewWithoutCopy = true;
		
		if (load !== false) {
			this.schemeData.copyElements = load;
			xajax_loadSchemeData(load);
		}
	};
	
	/**
	 * Sprawdza czy wszystkie pola formularza do ustawienia meta informcji dla układu 
	 * są wypełnione, jesli nie zwraca tekst z informacją jakie pola musi wypełnić użytkownik
	 */
	this.checkMeta = function () {
		var str = "";
		
		if (document.smm.title.value == "") {
			str += "Pole tytuł strony musi być uzupełnione\n";
		}
		
		if (document.smm.keywords.value == "") {
			str += "Pole słowa kluczowe musi być uzupełnione\n";
		}
		
		if (document.smm.description.value == "") {
			str += "Pole opis strony musi być wypełnione\n";
		}
		
		var langSelected = false;
		if (document.smm.lang.length !== undefined) {
			for (var i = 0; i < document.smm.lang.length && !langSelected; i++) {
				if (document.smm.lang[i].checked) {
					langSelected = true;
				}
			}
		} else {
			langSelected = true;
		}
		
		if (!langSelected) {
			str += "Musisz wybrać jeden z języków";
		}
		
		return str;
	};
	
	/**
	 * Zapisuje w bazie danych meta informacje dla układu 
	 * @param id identyfikator układu dla którego meta informacje mają zostać zapisane
	 * @param save okresla czy informacje mają zostać zapisane do bazy danych czy tylko
	 * przekopiowane do tablicy i póżniej zapisane przez inną funkcje
	 * (formularz do zmiany meta informaci tylko zapamiętuje dane w tablicy a póżniej 
	 * dopiero 'save' całego układu zapisuje je w bazie )
	 */
	this.setMeta = function(id, save) {
		
		var str = this.checkMeta();
		
		if (str != "") {
			alert(str);
			$('setMetaMenu').style.display = "block";
			$('disableBackground').style.display = "block";
			return 1;
		}
		
		this.meta.title = document.smm.title.value;
		this.meta.keywords = document.smm.keywords.value;
		this.meta.description = document.smm.description.value;	
		if (document.smm.lang.length !== undefined) {
			for(var i = 0; i < document.smm.lang.length; i++) {
				if(document.smm.lang[i].checked === true) {
					this.meta.lang = document.smm.lang[i].value;
				}
			}
		} else {
			this.meta.lang = document.smm.lang.value;
		}
		
		if (save === true) {
			xajax_zapiszLayout(id, this.meta, this.blocks);
		}
		
		$('setMetaMenu').style.display = "none";
		$('disableBackground').style.display = "none";	
	};
	
	/**
	 * Funkcja sprawdzająca poprawność formularza do zmiany właściwości układu
	 * (sprawdza czy wszystkie pola które powinny być wypełnione są zaznaczone - odnosi 
	 * sie to do pól które użytkownik zaznaczył że sam 'wybierze' z listy dostępnych)
	 * @param xajaxCall zmienna do okręślenie czy funkcja jest wołana w odpowiedzi na zdarzenie
	 * wywołane przez uzytkownika czy w odpowiedzi na żądanie xajax-a
	 * (jezeli wołana jest w odpowiedzi na sdarzenie użytkownika to woła ona funkcje xajax
	 * do sprawdzenia czy dana nazwa układu jest używana i ta funkcja ustawia odpowidnie pole formularza
	 * na true(nie jest uzywana) lub false i woła ponownie funkcje 'checkSchemedata' ale z argumentem
	 * xajaxCall na true przez co nie dochodzi do wołania ponownie funkcjixajax i zapetlenie)
	 * @param create argument do okreslenie czy dane dotyczą układu który ma zostać utworzony czy 
	 * ukladu którego dane tylko aktualizujemy
	 * @param id identyfikator układu którego dane aktualizujemy
	 */
	this.checkSchemeData = function(xajaxCall, create, id) {
		var str = "";
		var isError = false;
		
		if ($('schemeMenuNames').childNodes.length === 0) {
			isError = true;
		} else {
			$A($('schemeMenuNames').childNodes).each( function (child) {
				child = child.childNodes[1];
				if (child.type == "text" && child.value == "") {
					isError = true;
					child.setStyle({"border": "solid 1px red"});
				} else if (child.type == "text" ){
					child.setStyle({"border": "solid 1px black"});
				}
			});
		}
		
		if (isError === true) {
			str += "Musisz podać nazwe układu\n";
		} else {
			var firstInput = $('schemeMenuNames').getElementsByTagName("input")[0];
			
			if (xajaxCall === false) {
				if (create == "Utwórz") {
					xajax_checkSchemeName(firstInput.value, create);				
				} else {
					xajax_checkSchemeName(firstInput.value, create, id);
				}
				
				return;
			}
			
			firstInput.style.border = "solid 1px black";
			if (document.getElementById('isOK').value == "false") {
				str += "Musisz podać inną nazwę układu, obecna jest już używana\n";
				firstInput.style.border = "solid 1px red";
			}
		}
		
		var isOK;
		if (document.schemeProp.lang_select.checked === true) {
			isOK = false;
			
			$A($('schemeSelectLang').childNodes).each(function (child) {
				if (child.nodeName == "INPUT") {
					if (child.checked === true) {
						isOK = true;
					}
				}
			});
			
			if (isOK === false) {
				str += "Musisz wybrać chociaż jeden język lub zaznacz pole wszystie\n";
			}
		}
		
		if (document.schemeProp.category_select.checked === true) {
			isOK = false;
			
			$A($('schemeSelectCategory').childNodes).each(function (child) {
				if (child.nodeName == "INPUT") {
					if (child.checked === true) {
						isOK = true;
					}
				}
			});
			
			if (isOK === false) {
				str += "Musisz wybrać chociaz jedną kategorie lub zaznacz pole wszystie\n";
			}
		}
		
		if (document.schemeProp.currency_select.checked === true) {
			isOK = false;
			
			$A($('schemeSelectCurrency').childNodes).each(function (child) {
				if (child.nodeName == "INPUT") {
					if (child.checked === true) {
						isOK = true;
					}
				}
			});
			
			if (isOK === false) {
				str += "Musisz wybrać chociaż jedną walute, lub zaznacz pole wszystie";
			}
		}
		
		if (str != "") {
			alert(str);
			return 1;
		}

		$('schemeMenu').style.display = "none";
		$('disableBackground').style.display = "none";
		
		if (create == "Utwórz") {			
			this.setSchemeData(create, id);
		} else {
			this.setSchemeData(id, null);
		}
		
		return 0;
	};
	
	/**
	 * Funkcja ustawia pola tablicy schemeData która pózniej przesyłana jest do
	 * funckji zapisującej dane do bazy danych
	 * @param id identyfikator układu którego dane zapamiętujemy
	 * @copyElements okresla czy wszystkie widgety mają przejśc do nowego układu
	 */
	this.setSchemeData = function(id, copyElements) {	
		var names = [];
		
		var radios = document.forms['schemeProp'].isPublic;
		
		for (var i = radios.length; i--; ) {
			if (radios[i].checked == true) {
				this.schemeData.isPublic = radios[i].value == "yes" ? 1 : 0;
			}
		}
		
		var inputs = $('schemeMenuNames').getElementsByTagName("input");

		for (var i = 0;  i < inputs.length; i++) {
			names[inputs[i].name] = inputs[i].value;
		}
		
		this.schemeData.names = names;
		
		var select = document.forms.selectLayoutsTheme.elements[0];
		var layoutTheme = select[select.selectedIndex].value;
		this.schemeData.layoutTheme = layoutTheme;
		var str;
		
		if ($('lang_all').checked === false) {
			str = "";
			
			$A($('schemeSelectLang').childNodes).each(function (child) {
				if (child.nodeName == "INPUT") {
					if (child.checked === true) {
						str += child.value + "|";
					}
				}
			});
			
			this.schemeData.served_langs = str;
			
		} else if ($('lang_all').checked === true) {
			this.schemeData.served_langs = "all|";
		}
		
		if ($('category_all').checked === false) {
			str = "";
			
			$A($('schemeSelectCategory').childNodes).each(function (child) {
				if (child.nodeName == "INPUT") {
					if (child.checked === true) {
						str += child.value + "|";
					}
				}
			});
			
			this.schemeData.category_id = str;
			
		} else if ($('category_all').checked === true) {
			this.schemeData.category_id = "all|";
		}
		
		if ($('currency_all').checked === false) {
		
			str = "";
			
			$A($('schemeSelectCurrency').childNodes).each(function (child) {
				if (child.nodeName == "INPUT") {
					if (child.checked === true) {
						str += child.value + "|";
					}
				}
			});
			
			this.schemeData.currency_id = str;
			
		} else if ($('currency_all').checked === true) {
			this.schemeData.currency_id = "all|";
		}
		
		$('schemeMenu').style.display = "none";
		$('disableBackground').style.display = "none";
		
//		console.log(this.schemeData);
		xajax_saveSchemeData(this.schemeData, id, this.blocks);
	};	
	
	this.zapiszLayoutBlocks = function(id) {
		xajax_zapiszLayout(id, this.meta, this.blocks);	
	};
	
	/**
	 * Zmienia adres www (słuzy głównie do odśiweżania albo przełączania do lub z trybu edycji)
	 * @param edirOrLoad tekst okreslający czy zmiana ma być w tryb edycji czy w tryb odczytu (niefortunnie 'load')
	 * @param id identyfikator układu do którego mamy przejść
	 */
	this.redirect = function(editOrLoad, id) {
		jQuery(".divForIframe").each(
			function() {
				var id = this.id.substr(12);
				var body = jQuery(this).find("iframe")[0].contentWindow.document.body;
				var lang = jQuery(this.parentNode).find(".activeLang")[0].innerHTML;
				xajax_saveText(id, body.innerHTML, lang);
			}
		);
		
		location.href="?mode=designer&" + editOrLoad + "=" + id;
	};
	
	this.loadTheme = function(id) {
		location.href="?mode=graphic&load=" + id;
	};
	
	this.deleteElement = function(object, noPrompt) {
		if(noPrompt || confirm('Na pewno usunąć?')) {
			$(object.id).style.display = 'none';
			xajax_removeWidget(object.className, object.id);
		}
	};
	
	this.drawGrid = function() {	
		var height = $('canvas').style.height;
		var width  = $('canvas').style.width;
		
		var yIteration = parseInt(height.substr(0, height.indexOf("px")), 10) / 10;
		var xIteration = parseInt(width.substr(0, width.indexOf("px")), 10) / 10;
		
//		console.log(yIteration + " " + xIteration);
		
		var fragment = document.createDocumentFragment();
		
		for (var j = 0; j < yIteration; j++) {
			var tr = document.createElement("tr");
			for (var i = 0; i < xIteration; i++) {		
				var td = document.createElement("td");
				td.id = "c_" + j + "_" + i;

				$(td).setStyle({border: 'solid 1px #999999', width: '10px', height: '10px'});
				
				if (Prototype.Browser.IE) {
					td.attachEvent("onclick", inoce.dodajPole);
					td.attachEvent("onmouseover", inoce.mouseOverTd);
					td.attachEvent("onmouseout", inoce.mouseOutTd);
				} else {
					td.addEventListener("click", inoce.dodajPole, false);
					td.addEventListener("mouseover", inoce.mouseOverTd, false);
					td.addEventListener("mouseout", inoce.mouseOutTd, false);
				}
				
				tr.appendChild(td);	
			}
			
			fragment.appendChild(tr);
		}
		
		var tbody = document.createElement("tbody");
		$('gridTable').appendChild(tbody);
		$('gridTable').tBodies[0].appendChild(fragment);
	};
	
	this.updateDesignerMenu = function(docId, themeId, domenId) {
		this.changeSelectedId('selectDoc', docId);
		this.changeSelectedId('selectLayoutsTheme', themeId);
		this.changeSelectedId('selectDomen', domenId);
		$('previewLink').href = "http://" + $('domenSelected')[$('domenSelected').selectedIndex].title;
	};
	
	this.changeMetaValues = function(key, value) {	
		if (key == "Title") {
			document.title = value;
		} else {
			var head = document.getElementsByTagName("head")[0];
			var meta = head.getElementsByTagName("meta");
			
			for (var i = meta.length; i--; ) {
				if (meta[i].nodeName == "META" && meta[i].name != "") {
					if (key == "Content-Language" && meta[i].httpEquiv == "Content-Language") {
						meta[i].content = value;
					} else if (meta[i].name.indexOf(key) > -1) {
						meta[i].content = value;
					}
				}
			}
		}
	};
	
	this.changeSelectedId = function(name, id) {
		if (document.forms[name]) {
			var select = document.forms[name].elements[0];
			
			for (var i = select.length; i--; ) {
				if (select[i].value == id) {
					select.selectedIndex = i;
					break;
				}
			}
		}
		
		if (name == "selectLayoutsTheme") {
			var obj = $("linkToGraphicFromDesigner");
			obj.href= "inoce.php?mode=graphic&load=" + id;
		}
	};
	
	this.hideLinksChceckBox = function(object) {
		var inputs = $('chooseLinks').getElementsByTagName("input");
		var disable = "disabled";
		
		if (object.checked) {
			disable = "";
		}
		
		for (var i = inputs.length; i--; ) {
			inputs[i].disabled = disable;
		}
	};
	
	this.submitLongList = function(bookmarkId, type, positionTop, positionLeft, form) {
		var naglowek = form.naglowek.value;
		var ile = form.ile.value;
		var kategoria = form.kategoria.value;
		var metoda = form.metoda.value;
		var liczbaOsob = form.l_osob.value;
		
		var str = naglowek + "#" + ile + "#" + kategoria + "#" + metoda + "#" + liczbaOsob;
		
		xajax_loadWidget(bookmarkId, type, positionTop, positionLeft, str);		
	};
}

inoce = new Inoce();
inoce.initialize();


function liczbaOsob() {
	var j;
	var i = document.formularz.kategoria.value;
	var ile_osob = document.getElementById("los"+i).value;
	
	for(j = 1; j < document.formularz.l_osob.childNodes.length ; j++) {
		if (document.getElementById("os"+j)) {
			document.getElementById("os"+j).style.display = '';
		}
	}
	for(j = parseInt(ile_osob, 10)+1; j < document.formularz.l_osob.childNodes.length ; j++) {	  
		if (document.getElementById("os"+j)) {
			document.getElementById("os"+j).style.display = 'none';
		}
	}
}

