function resetInputs(ids)
{
    for(i in ids) {
        document.getElementById(ids[i]).value = 0;
    }
}
function resetAll(formid)
{
    form = document.getElementById(formid);
    for(i in form.getElementsByTagName("select")) {
        if(form[i] != null) {
            form[i].value = 0;
        }
    }
}
function setCurrentCoupon(elm)
{
	var coupon = document.getElementById('current-coupon');
	var form = document.getElementById('form-buycoupon');
	coupon.name = elm.name;
	coupon.value = elm.value;
	form.submit();
}
function submitForm(elm, val) {
	if(typeof elm != 'undefined') {
		document.getElementById('hid-' + elm).value = val;
	}
	document.getElementById('filter-form').submit();
}

function writetxt(text, caller)
{
	var position = elementPosition(caller);
	var navtxt = document.getElementById('navtxt');
	navtxt.innerHTML = text;
	navtxt.style.display = 'block';
	navtxt.style.top = (position[1]) + 'px';
	navtxt.style.left = position[0] + 'px';
}
function hideElement(elm, e) {
	var target = null;
	if(e.toElement) {				
		target = e.toElement;
	}
	else if(e.relatedTarget) {				
		target = e.relatedTarget;
	}
	if(!isChildOf(elm, target) && elm != target ) {
		elm.style.display = 'none';
		elm.innerHTML = '';
	}
	else {
		return false;
	}
}
function isChildOf(parent, child) {
	if(child != null) {			
		while(child.parentNode) {
			if((child = child.parentNode) == parent) {
				return true;
			}
		}
	}
	return false;
}
function elementPosition(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}
	
version = navigator.appVersion.toLowerCase();
ie = (version.indexOf('msie')>-1);
subsVisible = [];
timer = false;
timer2 = false;
milisec = 500;
function subShow(subId)
{
    list = document.getElementById('navi-list');
    submenus = list.getElementsByTagName('ul');
    for(i in submenus) {
        if(submenus[i].id) {
            if(submenus[i].id == subId) {
                elm = document.getElementById(subId);
                if(timer) {
                    clearTimeout(timer);
                    clearTimeout(timer2);
                }
                if(elm && !subsVisible[subId]) {
                    elm.style.display = "block";
                    subsVisible[subId] = true;
                    selectsVisibility('hidden');
                }
            }
            else {
                subHide(submenus[i].id);
            }
        }
    }
}
function subWannaHide(subId)
{
    elm = document.getElementById(subId);
    if(elm && subsVisible[subId]) {
        timer = setTimeout("subHide(\""+subId+"\")", milisec);
        timer2 = setTimeout("selectsVisibility('visible')", milisec);
    }
}
function subHide(subId)
{
    elm = document.getElementById(subId);
    if(elm && subsVisible[subId]) {
        elm.style.display = "none";
        subsVisible[subId] = false;
    }
}
function selectsVisibility(vis)
{
    if(!ie) {
        return;
    }
    form = document.getElementById('filter-form');
    if(!form) {
        return;
    }
    selects = form.getElementsByTagName('select');
    for(s in selects) {
        if(selects[s].id) {
            sel = document.getElementById(selects[s].id);
            sel.style.visibility = vis;
        }
    }
}
function menuClick(parentid, lvl)
{
	if(lvl >= 0) lvl = ' lvl'+ lvl;
	else lvl = '';

	listid = 'menu-parentid-'+parentid;
    buttonid = 'a-parentid-'+parentid;
    filterid = 'filter-parentid-'+parentid;

    list = document.getElementById(listid);
    button = document.getElementById(buttonid);
    filter = document.getElementById(filterid);

    if(button.className == 'tree closed'+lvl) {
        button.className = 'tree open'+lvl;
        if(list) {
            list.style.display = "block";
        }
        if(filter) {
            filter.style.display = "block";
        }
    }
    else {
        button.className = 'tree closed'+lvl;
        if(list) {
            list.style.display = "none";
        }
        if(filter) {
            filter.style.display = "none";
        }
    }
}

function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}
}

var _timer = null;
var _requestQueued = false;
var _requestPending = false;
var cachedSearches = [];
var selectedItem = 0;
var typedString = '';
var result = new Array();
var formSubmitEnabled = true;

function disableAutocomplete()
{
	var input = document.getElementById('i-search');
	input.setAttribute("autocomplete", "off");
}

addLoadEvent(disableAutocomplete);

function searchTyping(e)
{
	var KeyID = (window.event) ? event.keyCode : e.keyCode;
	
	switch(KeyID) {
		case 13:
			if(selectedItem > 0) {
				redirectToResult(selectedItem);
			}
			else {
				return;
			}
			break;
		case 38:
		case 40:
			formSubmitEnabled = false;
			selectItem(e);
			break;
		default:
			selectedItem = 0;
			formSubmitEnabled = true;
			
			if(!_requestPending) {
				if(_timer != null) {
					window.clearTimeout(_timer);
					_timer = null;
				}
		
				_timer = window.setTimeout(searchHandler, 1000);
			}
			else {
				_requestQueued = true;
			}
			break;
	}
}
function searchHandler()
{
	_requestQueued = false;
	_requestPending = true;
	
	var searchText = document.getElementById('i-search').value;
	if(searchText == "" || searchText.length < 3 || searchText.length > 50) {
		_requestPending = false;
		searchWindowClose();
		return;
	}
	
	if(cachedSearches[searchText] != undefined) {
		searchCallback(cachedSearches[searchText], searchText);
	}
	else {
		ajaxGetResponse('/search-ajax.php?search=' + searchText, searchText, searchCallback);
	}
}
function searchCallback(data, searchText)
{
	_requestPending = false;
	if(!data) {
		searchWindowClose();
	}
	else {
		eval(data);
		var html = '';
		for(id in result) {
			html += '<div id="itemid-' + id + '" class="item" onclick="redirectToResult(' + id + ')" onmousemove="selectItemByElement(this)">' + result[id].highlited + '</div>';
		}
		var searchWindow = document.getElementById('searchWindow');
		searchWindow.style.display = 'block';
		searchWindow.innerHTML = html;
		selectsVisibility('hidden');
	}
	cachedSearches[searchText] = data;
	
	if(_requestQueued) {
		searchHandler();
	}
}
function ajaxGetResponse(url, searchText, callback)
{
	var xhr;
	try {
		xhr = new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch (e) {
		try {
			xhr = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (e2) {
			try {
				xhr = new XMLHttpRequest();
			}
			catch (e3) {
				xhr = false;
			}
		}
	}
	xhr.onreadystatechange = function()
	{	
		if(xhr.readyState  == 4) {
			if(xhr.status  == 200) {
				callback(xhr.responseText, searchText);
			}
			/*else {
				alert(xhr.status);
				callback("Error code " + xhr.status, searchText);
			}*/
		}
	};
	xhr.open("GET", url, true);
	xhr.send(null);
}
function searchWindowClose()
{
	window.setTimeout(_searchWindowClose, 500);
}
function _searchWindowClose()
{
	var searchWindow = document.getElementById('searchWindow');
	searchWindow.style.display = 'none';
	selectsVisibility('visible');
}
function selectItem(e)
{
	var KeyID = (window.event) ? event.keyCode : e.keyCode;
	switch(KeyID) {
		case 38:
			_selectItem(-1);
			break;
		case 40:
			_selectItem(1);
			break;
		default:
			return;
	}
}
function _selectItem(offset)
{
	if(!result || !result.length) {
		return;
	}
	
	var searchText = document.getElementById('i-search');
	
	if(selectedItem == 0) {
		typedString = searchText.value;
	}
	var newOffset = selectedItem + offset;
	
	if(newOffset == 0 || newOffset >= result.length) {
		selectedItem = 0;
	}
	else if(newOffset == -1) {
		selectedItem = result.length - 1;
	}
	else if(result[newOffset] != undefined) {
		selectedItem = newOffset;
	}
	else {
		alert('out of array');
	}
	
	var searchItem = document.getElementById('itemid-' + selectedItem);
	resetItems();
	
	if(selectedItem == 0) {
		searchText.value = typedString;
		formSubmitEnabled = true;
	}
	else {
		searchText.value = result[selectedItem].title;	
		searchItem.className = 'item selected';
	}
}
function resetItems()
{
	var searchWindow = document.getElementById('searchWindow');
	var searchItems = searchWindow.getElementsByTagName('div');
	
	for(i = 0; i < searchItems.length; i++) {
		if(i != undefined && !isNaN(i)) {
			searchItems[i].className = 'item';
		}
	}
}
function selectItemByElement(element)
{
	resetItems();
	var searchText = document.getElementById('i-search');
	
	if(selectedItem == 0) {
		typedString = searchText.value;
	}
	element.className = 'item selected';
	selectedItem = parseInt(element.id.substring(7));
	searchText.focus();
}
function redirectToResult(id)
{
	if(result[id] != undefined) {
		window.location = result[id].url;
	}
}
function formSubmitCheck()
{
	return formSubmitEnabled;
}

function emailCheck(email)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	
	if(!reg.test(email.value)) {
		alert('E-mailová adresa je neplatná.');
		email.focus();
		return false;
	}
	
	login = document.getElementById('i-login');
	if(login.value == '' && email.value.length <= 27) {
		login.value = email.value;
	}
}
function loginCheck(login) {
    var reg = /\W/;

    if(login.value == "" || login.value.length < 5 || login.value.length > 27 || reg.test(fld.value)) {
        alert("Zadané uživatelské jméno je neplatné. Smí obsahovat pouze velká a malá písmena, číslice a některé speciální znaky (@-_.). "
			+ "Minimální délka uživatelského jména je 5 znaků, maximální delka je 30 znaků a nesmí obsahovat mezery.");
		login.focus();
    	return false;
	}
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

var openedMenus = {};
var currentMenuItem = null;

function open_menu(elm)
{ 
	if(currentMenuItem != null) {
		return false;
	}
	var cid = elm.id.substr(4);
	if(openedMenus[cid] == undefined && elm.className != 'open') {
		currentMenuItem = elm;
		ajaxGetResponse('/ajax/open_menu.php?catid=' + cid, '', stateChanged);
	}
}
function stateChanged(responseText, searchText)
{
	if(currentMenuItem == null) {
		return false;
	}
	currentMenuItem.innerHTML += responseText;
	openedMenus[currentMenuItem.id.substr(4)] = 1;
	currentMenuItem = null;
}