function updateRemainingChars(field, display, limit) {
	var fieldElem = document.getElementById(field);
	var displayElem = document.getElementById(display);
	var remainingChars = limit-fieldElem.value.length;
	if(remainingChars <=0) {
		fieldElem.value = fieldElem.value.substr(0, limit);
		remainingChars = 0;
	}
	displayElem.replaceChild(document.createTextNode(remainingChars), displayElem.firstChild);
}
function selectNoMonths() {
	for(i=1;i<=12;i++) {
		document.getElementById("month"+i).checked = false;
	}
}
function selectAllMonths() {
	for(i=1;i<=12;i++) {
		document.getElementById("month"+i).checked = true;
	}
}
function switchMonths(id) {
	if(document.getElementById("month"+id).checked == false) {
		document.getElementById("aux1_0").selected = true;
	}
}
function AddPricelistRecord() {
	var tr = document.createElement("tr");
	var td1 = document.createElement("td");
	tr.appendChild(td1);
	var td2 = document.createElement("td");
	var input2 = document.createElement("input");
	input2.type = "text";
	input2.name = "forms[pricelist_form][dates][]";
	td2.appendChild(input2);
	tr.appendChild(td2);
	var td3 = document.createElement("td");
	var input3 = document.createElement("input");
	input3.type = "text";
	input3.name = "forms[pricelist_form][price][]";
	td3.appendChild(input3);
	tr.appendChild(td3);
	table = document.getElementById('pricelist');
	table.appendChild(tr);
	return false;
}
function RemovePricelistRecord() {

}
function swapTabs(active, config) {
	for(i=1;i<=config[0];i++) {
		var tab = document.getElementById(config[1]+i);
		var tablabel = document.getElementById(config[2]+i);
		if(tab != undefined) {
			if(i == active) {
				tab.style.display = 'block';
			} else {
				tab.style.display = 'none';
			}
		}
		if(tablabel != undefined) {
			if(i == active) {
				tablabel.className = 'selected';
			} else {
				tablabel.className = '';
			}
		}
	}
}
function setTabs(currentTabConfig, loadGoogleMaps) {
	for(i=1;i<=tabLabelCount;i++) {
		if(document.getElementById("ObjectTab"+i) != undefined) {
			if(currentTabConfig == i) {
			document.getElementById("ObjectTab"+i).className = 'selected';
			} else {
			document.getElementById("ObjectTab"+i).className = '';
			}
		}
	}
	for(i=1;i<=tabCount;i++) {
		if(document.getElementById("ObjectBox"+i) != undefined) {
			document.getElementById("ObjectBox"+i).style.display = 'none';
		}
	}
	for(i in TabConfig[currentTabConfig]) {
		if(document.getElementById("ObjectBox"+TabConfig[currentTabConfig][i]) != undefined) {
			document.getElementById("ObjectBox"+TabConfig[currentTabConfig][i]).style.display = 'block';
		}
	}
	if(loadGoogleMaps && MapVisible != undefined && MapVisible == 0) {
		initialize_google_map();
	}
	return false;
}

function getHTTPObject() {
	if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else {
		return null;
	}
}

function getSeo(from, to) {
	var source = document.getElementById(from);
	if(source == undefined || source.value == undefined) {
		return;
	}
	var httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", "seo-ajax.php?input="+source.value, true);
		httpObject.send(null);
		httpObject.onreadystatechange = function() {
			var target = document.getElementById(to);
			if(target == undefined || target.value == undefined) {
				return;
			}
			target.value = httpObject.responseText;			
		};
	}	
}
function searchObject(field) {
	var caller = document.getElementById(field);
	if(caller == undefined) {
		return false;
	}
	var myForm = caller.parentNode;
	if(myForm == undefined) {
		return false;
	}
	var callee = document.getElementById(field+"_select");
	if(callee == undefined) {
		callee = document.createElement("select");
		callee.id = field+"_select";
		var newOption = document.createElement("option");
		newOption.value = "0";
		newOption.text = "--wybierz--";
		callee.appendChild(newOption);
		if (callee.addEventListener){
			callee.addEventListener('change', function() {if(callee.selectedIndex) {caller.value = callee.options[callee.selectedIndex].attributes.value.nodeValue; myForm.removeChild(callee);}}, false); 
		} else if (callee.attachEvent){
			callee.attachEvent('onchange', function() {if(callee.selectedIndex) {caller.value = callee.options[callee.selectedIndex].attributes.value.nodeValue; myForm.removeChild(callee);}});
		}

	}
	if(!isInt(caller.value) && caller.value.length>0) {
		if(callee.parentNode != myForm) {
			myForm.insertBefore(callee, caller);
		}
		if(caller.value.length>2) {
			var httpObject = getHTTPObject();
			if (httpObject != null) {
				httpObject.open("GET", "seo-ajax.php?task=osearch&input="+caller.value, true);
				httpObject.send();
				httpObject.onreadystatechange = function() {
					if (httpObject.readyState == 4 && httpObject.status == 200) {
						var childs = callee.childNodes.length;
						for(i=childs;i>1;i--) {
							callee.removeChild(callee.childNodes[i-1]);
						}
						var options = httpObject.responseXML.documentElement.getElementsByTagName("option");
						if(options != undefined && options != null) {
							for(i=1;i<=options.length;i++) {
								var newOption = document.createElement("option");
								newOption.value = options[i-1].attributes.value.nodeValue;
								newOption.text = options[i-1].firstChild.nodeValue;
								callee.appendChild(newOption);
							}
						}
					}
				};
			}
		}
	} else {
		if(callee.parentNode == myForm) {
			myForm.removeChild(callee);
		}
		callee = undefined;
	}
	return true;
}

function isInt(x) {
   var y=parseInt(x);
   if (isNaN(y)) return false;
   return x==y && x.toString()==y.toString();
 }
 
var CTRL = false;
var SHIFT = false;
var ALT = false;
var CHAR_CODE = -1;
function KeyDownHandler(e) {
	var x = '';
	if (document.all) {
		var evnt = window.event;
		x = evnt.keyCode;
	} else {
		x = e.keyCode;
	}
	DetectKeys(x, true);
}

function KeyUpHandler(e) {
		var x = '';
		if (document.all) {
			var evnt = window.event;
			x = evnt.keyCode;
		} else {
			x = e.keyCode;
		}
		DetectKeys(x, false);
}
function DetectKeys(KeyCode, IsKeyDown) {
	if (KeyCode == '16') {
		SHIFT = IsKeyDown;
	} else if (KeyCode == '17') {
		CTRL = IsKeyDown;
	} else if (KeyCode == '18') {
		ALT = IsKeyDown;
	} else {
		if(IsKeyDown) {
	CHAR_CODE = KeyCode;
		} else {
	CHAR_CODE = -1;
		}
	}
}
function initKeyMonitoring() {
	document.onkeydown = KeyDownHandler;
	document.onkeyup = KeyUpHandler;
}
function swapCalendar(day_id) {
	if(SHIFT) {
		var previousDiv = document.getElementById("day"+currentCalendarDay);
		var previousInput = document.getElementById("input"+currentCalendarDay);
		var selectedDiv = document.getElementById("day"+day_id);
		var selectedInput = document.getElementById("input"+day_id);
		if(currentCalendarDay>day_id) {
			for(i=day_id;i<=currentCalendarDay;i++) {
				if(previousInput.value == 1) {
					document.getElementById("day"+i).className = "free_day";
					document.getElementById("input"+i).value = 1;
				} else {
					document.getElementById("day"+i).className = "busy_day";
					document.getElementById("input"+i).value = 0;
				}
			}
		} else if(currentCalendarDay<day_id) {
			for(i=currentCalendarDay;i<=day_id;i++) {
				if(previousInput.value == 1) {
					document.getElementById("day"+i).className = "free_day";
					document.getElementById("input"+i).value = 1;
				} else {
					document.getElementById("day"+i).className = "busy_day";
					document.getElementById("input"+i).value = 0;
				}
			}
		} else {
			if(selectedInput.value == 1) {
				selectedDiv.className = "busy_day";
				selectedInput.value = 0;
			} else {
				selectedDiv.className = "free_day";
				selectedInput.value = 1;
			}
		}
		currentCalendarDay = day_id;
	} else {
		currentCalendarDay = day_id;
		var selectedDiv = document.getElementById("day"+day_id);
		var selectedInput = document.getElementById("input"+day_id);
		if(selectedInput.value == 1) {
			selectedDiv.className = "busy_day";
			selectedInput.value = 0;
		} else {
			selectedDiv.className = "free_day";
			selectedInput.value = 1;
		}
	}
}
function HideShowBox(boxId) {
	var box = document.getElementById(boxId);
	if(box != undefined) {
		var Content = box.lastChild;
		var Controller = Content.previousSibling;
		if(Content != undefined && Controller != undefined && Content.className != undefined) {
			if(Content.className == 'HiddenContent') {
				Content.className = 'ShownContent';
				Controller.replaceChild(document.createTextNode("ukryj"), Controller.firstChild);
			} else if(Content.className == 'ShownContent') {
				Content.className = 'HiddenContent';
				Controller.replaceChild(document.createTextNode("pokaż"), Controller.firstChild);
			}
		}
	}
}
function HideHint() {
	var hint = document.getElementById("hintBox");
	if(hint != undefined) {
		hint.parentNode.removeChild(hint);
	}
}
function ShowHint(caller, text) {
	HideHint();
	var hint = document.createElement("div");
	hint.id = "hintBox";
	hint.style.top = (caller.offsetTop-5)+"px";
	hint.style.left = (caller.offsetLeft-5)+"px";
	hint.style.zIndex = 2;
	hint.innerHTML = text;
	if (hint.addEventListener){
		hint.addEventListener('mouseout', MonitorHint, false); 
	} else if (hint.attachEvent){
		hint.attachEvent('onmouseout', MonitorHint);
	}
	document.body.appendChild(hint);
}
function MonitorHint(e) {
	mousex = 0;
	mousey = 0;
	var hint = document.getElementById("hintBox");
	if(hint == undefined) {
		return;
	}
	if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event)
	if (e) { 
		if (e.pageX || e.pageY) { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
			mousex = e.pageX;
			mousey = e.pageY;
		}
		else if (e.clientX || e.clientY) { // works on IE6,FF,Moz,Opera7
			mousex = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			mousey = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
	}
	if(mousex<=hint.offsetLeft || mousex>=(hint.offsetLeft+hint.offsetWidth) || mousey<=hint.offsetTop || mousey>=(hint.offsetTop+hint.offsetHeight)) {
		HideHint();
	}
}
function HideHint() {
	var hint = document.getElementById("hintBox");
	if(hint != undefined) {
		hint.parentNode.removeChild(hint);
	}
}

