function spoctiChyby(ajax) {
	var chyb = getElementsByClassName('input_chyba').length;
	if (chyb > 0) document.getElementById('submit_button').disabled = true;
	else { 
		document.getElementById('submit_button').disabled = false;	
	}
	
	if (ajax & true) kalk.send();
	else return chyb;
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

function validateInputField(typ, obj, mindelka, pocitat, ajax, zobrazit) {
	var hodnota = obj.value;
	var ok = true;
	
	switch (typ) {
		case 'time': var reg = new RegExp("^[0-2]?[0-9]{1}:[0-9]{2}$"); break;	
		case 'something': var reg = new RegExp(".+"); break;
		case 'numbers': var reg = new RegExp("^[0-9]{1,}$"); break;
		case 'email' : var reg = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"); break;
	}
	
	var result = hodnota.match(reg);		
	if (result != null) {obj.className = null;}
	 else {obj.className = 'input_chyba'; ok = false;}
	
	if (mindelka && mindelka > 0)
		if (hodnota.legth < mindelka) { obj.className = 'input_chyba'; ok = false;}
	
	if (zobrazit && ok == true) {
		document.getElementById(zobrazit).style.visibility = 'visible';
	}
	
	if (pocitat & true)
		spoctiChyby(ajax);
	else
		return ok;
}

function validateSelectField(minimum, obj, pocitat, ajax, zeroDependent) {
	var hodnota = obj.value;
	var ok = true;
	
	if (hodnota >= minimum) {obj.className = null;}
	 else {obj.className = 'input_chyba'; ok = false;}
	
	if (zeroDependent) {
		zero2dependent(obj, zeroDependent);
	}
	
	if (pocitat & true)
		spoctiChyby(ajax);
	else
		return ok;
}

function validatePasswordFields(pass1, pass2, styl) {
	if (pass1.value !== pass2.value) {
		if (styl) {
				pass1.className = styl;
				pass2.className = styl;
		}
		else
			return false;
	}
	else
		return true;
}

function zero2dependent(source, d_field) {
	if (source.value == 1) { // 0 = [Vyberte ...], 1 = Vlastni
		document.getElementById(d_field).value = 0;
		document.getElementById(d_field).className = "";
	}
}

function switchDisplayDiv(show, hide) {

		 	var s = document.getElementById(show);
			var h = document.getElementById(hide);
				
			if (s) s.style.display = 'block';
			if (h) h.style.display = 'none';
}

function validateNewUserForm(frmName) {
	var form = document.getElementById(frmName);
	var chyby = 0;
	
	
	validateInputField('email', form.email);
	validateInputField('something', form.password, 5);
	validateInputField('something', form.password2, 5);
	validatePasswordFields(form.password, form.password2, 'input_chyba');
	validateInputField('something', form.phone, 9);
	validateInputField('something', form.name, 5);
	validateInputField('something', form.city, 2);
	
	rDiv = (frmName == "newuser1" ? "messageDiv" : "messageDiv2");
	userName.constructor(form.email.getAttribute('id'), rDiv);
	
	chyby = getElementsByClassName('input_chyba').length;
	
	if (chyby > 0) return false;
	
	return true;

}

/* Overeni dostupnosti uzivatelskeho jmena*/
var userName = {
	xmlHttp : null,
	messageDiv : null,
	queryInputId : null,
	
	constructor : function(queryInput, resultDiv) {
			userName.queryInputId = document.getElementById(queryInput);
			userName.messageDiv = document.getElementById(resultDiv);
			userName.send();
	},
	
	send : function () {
			var xmlHttp = userName.getXmlHttpObject();
			var query = urlencode(userName.queryInputId.value);
			if (xmlHttp) {
				var url = "rezervace_kontrola_login.php";
				url=url+"?q="+urlencode(query);
				url=url+"&sid="+Math.random();
				//alert(url);
				xmlHttp.open("GET",url,true);			
				xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');				
				xmlHttp.onreadystatechange=function () { 
					if(xmlHttp.readyState==4) {
						userName.getResult(xmlHttp.responseText);
					}
				}
			xmlHttp.send(null);
			}
	},
	
	getResult: function(result) {
			//alert(result);
			if (result != 0) {
				kalk.replaceNode(userName.messageDiv, 'Toto uživatelské jméno je již OBSAZENO.');
				userName.queryInputId.className = 'input_chyba';
			}
			else {
				kalk.replaceNode(userName.messageDiv, 'min. 4 znaky');
				userName.messageDiv.className = 'small grey right';				
			}
	},
	
	getXmlHttpObject: function() {
		//var xmlHttp;
		try	 {
			// Firefox, Opera 8.0+, Safari
			userName.xmlHttp=new XMLHttpRequest();
		}
		catch (e) {
			// Internet Explorer
		 	try	{
		  		userName.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		  	}
		 	catch (e)  {
		  		userName.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		  	}
		}
		return userName.xmlHttp;
	}
}	// konec objektu USERNAME

	
/* Kalkulace ceny */
var kalk = {
	on : true,
	debug : true,
	xmlHttp : null,
	
	divN : null,
	divD : null,
	divP : null,
	divO : null,
	divC : null,
	hiddenC : null,
	
	constructor : function() {
		if (kalk.on) {
			//alert("START");
			kalk.divN = document.getElementById('kalk_navsteva');
			kalk.divD = document.getElementById('kalk_doprava');			
			kalk.divP = document.getElementById('kalk_parkovne');
			kalk.divO = document.getElementById('kalk_obcerstveni');
			kalk.divC = document.getElementById('kalk_celkem');
			kalk.hiddenC = document.getElementById('frm_cena');
			kalk.send();
		}
		else {
		}
	},
	
	send : function () {
		if (kalk.on) {
			//alert("SEND");
			var xmlHttp = kalk.getXmlHttpObject();
			var query = kalk.getQuery();
			if (xmlHttp) {
				var url = "rezervace_kalkulace.php";
				url=url+"?"+(query);
				url=url+"&sid="+Math.random();
				//alert(url);
				xmlHttp.open("GET",url,true);			
				xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');		
				xmlHttp.onreadystatechange=function () { 
					if(xmlHttp.readyState==4) {
						//alert( xmlHttp.responseText);
						kalk.getResult(eval("({result: " + xmlHttp.responseText + "})"));
					}
				}
				xmlHttp.send(null);
			}
		}
	},
	
	getResult : function(json) {
		//alert("RESULT");
		if (json.result.length == 1 && json.result != null) {
			cena = json.result[0];
			kalk.replaceNode(kalk.divN, cena.navsteva);
			kalk.replaceNode(kalk.divD, cena.doprava);
			kalk.replaceNode(kalk.divP, cena.parkovne);
			kalk.replaceNode(kalk.divO, cena.obcerstveni);
			kalk.replaceNode(kalk.divC, cena.celkem);
			kalk.hiddenC.value = cena.celkem;
    	}
		else {
			//alert('Nic nemam');
		}
	},
	
	replaceNode : function(node, newvalue) {
		if (node.childNodes.length > 0) {
			node.replaceChild(document.createTextNode(newvalue), node.childNodes[0]);
		}
		else {
			node.appendChild(document.createTextNode(newvalue));
		}
	},
	
	getQuery : function() {
		var q = "";
		q += "pid=" + document.getElementById('frm_program').value; 
		q += "&osob=" + document.getElementById('frm_pocet_osob').value;
		q += "&d_typ=" + document.getElementById('frm_doprava_typ').value;
		//q += "&d_km=" + document.getElementById('frm_doprava_km').value;
		q += "&o_typ=" + document.getElementById('frm_obcerstveni_typ').value;
		q += "&o_ks=" + document.getElementById('frm_obcerstveni_ks').value;
		q += "&w_edu=" + document.getElementById('frm_w_edutainer').checked;

		return q;
	},
	
	getXmlHttpObject: function() {
		//var xmlHttp;
		try	 {
			// Firefox, Opera 8.0+, Safari
			kalk.xmlHttp=new XMLHttpRequest();
		}
		catch (e) {
			// Internet Explorer
		 	try	{
		  		kalk.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		  	}
		 	catch (e)  {
		  		kalk.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		  	}
		}
		return kalk.xmlHttp;
	}
	
}	// Konec objektu KALK


function urlencode(str)  {
	var ret = str;
    
		ret = ret.toString();
		ret = encodeURIComponent(ret);
		ret = ret.replace(/%20/g, '+');

	return ret;
}
	
function startPageIndex() {
	
	//kalk.constructor();
	if (window.location.href.indexOf('rezId=') == -1) setFormRezervace();

}
