var sf_imported = true;
var small_form = false;
var sfHttp;
var sf_pocet = '';
var actionSet = false;

function lmSfSubmit(url) {
	if (small_form){
		i = 1;
		selects = document.getElementsByTagName("select");
		for (i = 0; i < selects.length; i++){
			if (selects[i].parentNode.style.display == 'none'){
				selects[i].selectedIndex = 0;
				i++;
			}
		}
	}
	if(url) {
		document.forms['sf'].action = url;
	}
	else {
		if (document.forms['sf'].elements['vypis'][0].checked){
			document.forms['sf'].action = '/last-minute/aktualne/';
		}
		else {
			document.forms['sf'].action = '/zajazdy/';
		}
	}
	
	if (parseInt(document.forms['sf'].elements['sf_count'].value) == 0) {
		alert("Zvolenej kombinácii podmienok nevyhovuje žiaden zájazd!\n"
			+ "Vyberte, prosím, iné podmienky.");
		return false;
	}
	return true;
}

function lmSfSetAction(elmId, url) {
	document.getElementById(elmId).checked = true;
	lmSfSubmit(url);
}

function lmSfReset() {
	document.forms['sf'].reset();
	lmSfRefresh();
}

function lmSfReload(data) {
	var selectedData = '';
	if (data) {
		var cook = data;
	}
	else {
		var cook = getCookie('lm_sf_data');
	}
	var schovat_parametry = true;
	if (cook && cook.length > 10) {
		//alert(cook);
		parts = cook.split("|");
		for(var i=0; i<parts.length; i++) {
			param = parts[i].split(":");
			if (param[1] != "") {

				pName = param[0] + '[]';
				if (el = document.forms['sf'].elements[pName]) {
					for(var o=0; o<el.options.length; o++) {
						if (el.options[o].value == param[1]) {
							el.options[o].selected = true;
							break;
						}
					}
					selectedData += pName + '=' + encodeURIComponent(param[1]) + '&';
				}
				else {
					selectedData += param[0] + '=' + encodeURIComponent(param[1]) + '&';
				}

				if(param[0] == "small_form" && param[1] == "0"){
					schovat_parametry = false;
				}
				else if(param[0] == "vypis"){
					if(el = document.getElementById("sf_vypis"+param[1])) {
						el.checked = true;
					}
				}
				else if (el = document.forms['sf'].elements[param[0]]) {
					el.value = param[1];
				}
			}
		}
	}
	else {
		document.forms['sf'].reset();
	}
	lmSfHideParam(schovat_parametry, selectedData);
}

var sfShowProgress = true;

function lmSfRefresh() {
	var data = sfGatherFormData(document.forms['sf']);

	lmSfRefreshData(data);
}

function lmSfRefreshData(data) {

	//alert(data);

	if (sfHttp) {
		sfHttp.abort();
	}

	sfHttp = getHTTPObject();
	if (sfHttp) {
		sfHttp.open("POST", "/inc/sf.php?rand="+(Math.random()*9), true);
		sfHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		sfHttp.send(data);

		var tEl = document.getElementById('sf_count');

		tEl.innerHTML = 'vyhľadávám .';
		sfShowProgress = true;
		sfProgress();

		sfHttp.onreadystatechange = sfPopulatesfForm;
	}
	else {
		setSfCount(sf_pocet);
		sfShowProgress = false;
	}

	return true;
}

function lmSfHideParam(hide, data){
	var elm;

	if (hide) {
		i = 1;
		while (elm = document.getElementById("sf_skryvat_" + i)){
			elm.style.display = 'none';
			i++;

			if(opts = elm.getElementsByTagName("option")) {
				for(var e=0; e<opts.length; e++) {
					opts[e].selected = false;
				}
			}
		}
		elm = document.getElementById("sf_zvys_param");
		elm.style.display = 'block';
		elm = document.getElementById("sf_sniz_param");
		elm.style.display = 'none';
		small_form = true;
	}
	else {
		i = 1;
		while (elm = document.getElementById("sf_skryvat_" + i)){
			elm.style.display = '';
			i++;
		}
		elm = document.getElementById("sf_zvys_param");
		elm.style.display = 'none';
		elm = document.getElementById("sf_sniz_param");
		elm.style.display = '';
		small_form = false;
	}
	if(data) {
		lmSfRefreshData(data);
	}
	else {
		lmSfRefresh();
	}
}

function sfProgress() {

	if (sfShowProgress) {
		ih = document.getElementById('sf_count').innerHTML;
		if (ih.length > 18) {
			document.getElementById('sf_count').innerHTML = "vyhľadávám .";
		}
		else {
			document.getElementById('sf_count').innerHTML += ".";
		}
		window.setTimeout(sfProgress, 1000);
	}

	//showProgressImage();

}

function showProgressImage() {
	var tEl = document.getElementById('sf_count');
	tEl.innerHTML = '<img src="/img/progress.gif" align="center" style="border: #888888 1px solid;">';
}

function setSfCount(sf_pocet) {
	document.getElementById('sf_count').innerHTML = sf_pocet;
	document.forms['sf'].elements['sf_count'].value = sf_pocet;
	sfShowProgress = false;
}

var sfParams = new Array('zamereni', 'zeme', 'destinace', 'doprava', 'odjezdInterval', 'maxCena',
'strava', 'delka', 'ck_id', 'osob', 'typ_ubytovani');

function sfPopulatesfForm() {
	var xmldoc;
	//var sf_pocet;
	var countEl;
	var selectedParamNames = new Array();
	var selectedParamValues = new Array();
	var selectedParamIndex = 0;

	if (sfHttp.readyState == 4) {

		//alert(sfHttp.responseText);

		if (sfHttp.status != 200) {
			//alert('Chyba v komunikaci se serverem. HTTP status: ' + sfHttp.status);
			setSfCount(sf_pocet);
			return true;
		}

		xmldoc = sfHttp.responseXML;
		if(!xmldoc) {
			//alert('Chyba v komunikaci se serverem. Chyba v XML.');
			setSfCount(sf_pocet);
			return true;
		}

		//var t = xmldoc = sfHttp.responseText;
		//alert(t.substring(t.indexOf('osob')));

		countEl = xmldoc.getElementsByTagName("count").item(0);
		sf_pocet = countEl.firstChild.nodeValue;

		setSfCount(sf_pocet);

		if (parseInt(sf_pocet) == 0) {
			alert("Zvolenej kombinácii podmienok nevyhovuje žiaden zájazd!\n"
			+ "Vyberte, prosím, iné podmienky.");
			return true;
		}

		for (var i=0; i<sfParams.length; i++) {
			var selectedIndex = 0;

			if (select = document.getElementById(('sf_' + sfParams[i]))) {
				if (select.parentNode.style.display != 'none'){
					var newOptions = new Array();

					var source = xmldoc.getElementsByTagName(sfParams[i]).item(0);
					var opts = source.getElementsByTagName("option");

					for(var o=0; o<opts.length; o++) {

						var node = opts.item(o);
						var newOpt = document.createElement("option");

						var label = node.attributes.getNamedItem("label").nodeValue;
						newOpt.appendChild(document.createTextNode(label));

						var atr = document.createAttribute("value");
						atr.value = node.attributes.getNamedItem("value").nodeValue;
						newOpt.setAttributeNode(atr);

						// vybrany option
						if (selected = node.attributes.getNamedItem("selected")
						&& selectedIndex == 0)
						{
							selectedIndex = o;
						}

						if (cls = node.attributes.getNamedItem("class")) {
							atr = document.createAttribute("class");
							atr.value = cls.nodeValue;
							newOpt.setAttributeNode(atr);

							if (cls.nodeValue == "gray") {
								atr = document.createAttribute("disabled");
								atr.value = "disabled";
								newOpt.setAttributeNode(atr);
							}
						}

						newOptions[o] = newOpt;
					}

					//alert('Gen new options '+sfParams[i]);

					while(select.hasChildNodes()) {
						select.removeChild(select.firstChild);
					}
					//alert('Del old options '+sfParams[i]);

					for(var o=0; o<newOptions.length; o++) {
						select.appendChild(newOptions[o]);
					}

					//alert('Add new options '+sfParams[i]);
					//if(select.options[selectedIndex]) {
					//	select.options[selectedIndex].selected = true;
					//}
					selectedParamNames[selectedParamIndex] = 'sf_' + sfParams[i];
					selectedParamValues[selectedParamIndex] = selectedIndex;
					selectedParamIndex++;
				}
			}
		}

		for(var i=0; i<selectedParamNames.length; i++) {
			if (select = document.getElementById(selectedParamNames[i])) {
				//alert(selectedParamNames[i]);
				select.options[selectedParamValues[i]].selected = true;
			}
		}
		//document.getElementById('sf_count').innerHTML = sf_pocet;
		sfHttp = false;
	}
}

function doNothing() {
	return true;
}

function sfGatherFormData(form){
	var str = "";
	for(i=0; i<form.elements.length; i++) {
		el = form.elements[i];

		//if (el.name == "odjezdOd" || el.name == "odjezdOd") continue;

		if (el.type != "button" && el.type != "reset"
		&& el.type != "submit" && el.name != "")
		{
			if (el.parentNode && el.parentNode.style.display == 'none'){
				str += el.name + "=displaynone&";
			}
			else if (el.type == "radio" || el.type == "checkbox") {
				if (el.checked) {
					str += el.name + "=" + encodeURIComponent(el.value) + "&";
				}
			}
			else if(el.type == "select-one") {
				x = 0;
				while (op = el.options[x]) {
					if (op.selected) {
						str += el.name + "=" + encodeURIComponent(el.options[x].value) + "&";
					}
					x++;
				}
			}
			else {
				str += el.name + "=" + encodeURIComponent(el.value)+"&";
			}
		}
	}
	//alert(str);
	return str;
}

