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;
        }
    }
}
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";
        }
    }
}
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
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 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);
	}
}
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)
{
	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.open("GET", url, true);
	xhr.send(null);

	xhr.onreadystatechange = function()
	{
		if(xhr.readyState  == 4) {
			if(xhr.status  == 200) {
				searchCallback(xhr.responseText, searchText);
			}
			else {
				alert(xhr.status);
				searchCallback("Error code " + xhr.status, searchText);
			}
		}
	};
}
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;
	}
}
//sliders
function loadSlider()
{
	//Slider.prototype.verifyOffset=function(checkPos){var newPos=YAHOO.util.Dom.getXY(this.getEl());if(newPos){if(isNaN(this.baselinePos[0])){this.setThumbCenterPoint();this.thumb.startOffset=this.thumb.getOffsetFromParent(newPos);}if(newPos[0]!=this.baselinePos[0]||newPos[1]!=this.baselinePos[1]){this.thumb.resetConstraints();this.baselinePos=newPos;return false;}}return true;};
    slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, topConstraint, bottomConstraint, tickSize);

    // Sliders with ticks can be animated without YAHOO.util.Anim
    slider.animate = false;

    slider.getRealValue = function() {
        return Math.round(this.getValue() * scaleFactor);
    }
    slider.subscribe("change", function(offsetFromStart) {
        var valnode = Dom.get(valuearea);
        var fld = Dom.get(textfield);
        var fldPreview = Dom.get(textfieldPreview);

        valnode.value = offsetFromStart;

        var actualValue = slider.getRealValue();

        fld.value = actualValue;
        fldPreview.innerHTML = actualValue.toString() + " Kč";

        Dom.get(bg).title = "Hodnota kupónu: " + actualValue;
    });
    slider.subscribe("slideStart", function() {
        YAHOO.log("slideStart fired", "warn");
    });
    slider.subscribe("slideEnd", function() {
        YAHOO.log("slideEnd fired", "warn");
    });
    Event.on(textfield, "keydown", function(e) {
        if (Event.getCharCode(e) === 13) {
            var v = parseFloat(this.value, 10);
            v = (lang.isNumber(v)) ? v : 0;
            slider.setValue(Math.round(v/scaleFactor));
        }
    });
    Event.on("putval", "click", function(e) {
        slider.setValue(100, false); //false here means to animate if possible
    });
    Event.on("getval", "click", function(e) {
        YAHOO.log("Current value: "   + slider.getValue() + "\n" + 
            "Converted value: " + slider.getRealValue(), "info", "example"); 
    });
    sliderLoaded = true;
}
function loadSliderCredits()
{
	sliderCredits = YAHOO.widget.Slider.getHorizSlider(bgCredits, thumbCredits, topConstraintCredits, bottomConstraint, tickSizeCredits);
    //sliderCredits.animate = true;
    
	sliderCredits.getRealValue = function() {
        return Math.round(sliderCredits.getValue() * scaleFactorCredits);
    }
    sliderCredits.subscribe("change", function(offsetFromStart) {
        var valnode = Dom.get(valueareaCredits);
        var fld = Dom.get(textfieldCredits);
        var fldPreview = Dom.get(textfieldPreview);

        valnode.value = offsetFromStart;
        var actualValue = getRoundedValue(sliderCredits.getRealValue());
        fld.value = actualValue;
        fldPreview.innerHTML = actualValue.toString() + " Kč";
        Dom.get(bgCredits).title = "Hodnota kupónu: " + actualValue;
    });
    sliderCredits.subscribe("slideStart", function() {
        YAHOO.log("slideStart fired", "warn");
    });
    sliderCredits.subscribe("slideEnd", function() {
        YAHOO.log("slideEnd fired", "warn");
    });
    Event.on(textfieldCredits, "keydown", function(e) {
        if (Event.getCharCode(e) === 13) {
            var v = parseFloat(this.value, 10);
            v = (lang.isNumber(v)) ? v : 0;
            sliderCredits.setValue(Math.round(v/scaleFactorCredits));
        }
    });
    Event.on("putval", "click", function(e) {
        sliderCredits.setValue(100, false);
    });
    Event.on("getval", "click", function(e) {
        YAHOO.log("Current value: "   + sliderCredits.getValue() + "\n" + "Converted value: " + sliderCredits.getRealValue(), "info", "example"); 
    });
    sliderCreditsLoaded = true;
}
function getRoundedValue(val)
{
	if(val < realTickSize) {
		return realTickSize;
	}
	
	var mod = val % realTickSize;
	if(!mod) {
		return val;
	}
	else if(mod < (realTickSize / 2)) {
		return val - mod;
	}
	else {
		return val + realTickSize - mod;
	}
}
function switchPayment(payment, logged, credits)
{	
	var inputPayment = Dom.get('payment');
	var divMoney = Dom.get('slider-money');
	var divCredits = Dom.get('slider-credits');
	var inputMoney = Dom.get('with-money');
	var inputCredits = Dom.get('with-credits');
	var artMoney = Dom.get('art_paywith_money');
	var artCredits = Dom.get('art_paywith_credits');
	var previewField = Dom.get(textfieldPreview);
	
	if(payment == 'money') {
		inputPayment.value = payment;
		divMoney.className = 'full';
		divCredits.className = 'full noscreen';
		inputMoney.className = 'button';
		inputCredits.className = 'button semitransparent';
		artCredits.className = 'noscreen';
		artMoney.className = '';
		if(!sliderLoaded) {
			loadSlider();
		}
		previewField.innerHTML = slider.getRealValue().toString() + " Kč";
	}
	else {
		if(logged && credits >= realTickSize) {
			inputPayment.value = payment;
			divMoney.className = 'full noscreen';
			divCredits.className = 'full';
			inputMoney.className = 'button semitransparent';
			inputCredits.className = 'button';
			artMoney.className = 'noscreen';
			artCredits.className = '';
			if(!sliderCreditsLoaded) {
				loadSliderCredits();
			}
			previewField.innerHTML = getRoundedValue(sliderCredits.getRealValue()) + " Kč";
		}
		else if(logged && credits < realTickSize) {
			alert('Pro nákup za tlapky jich potřebujete mít nastřádáno alespoň ' + realTickSize + '. Momentálně máte na účtě ' + credits + ' tlapek.');
			return false;
		}
		else {
			alert('Pro nákup za tlapky se musíte nejprve přihlásit');
			return false;
		}
	}
}