function warningMe(){
   if(document.getElementById('warning')){
   document.getElementById('warning').style.background = 'red';
   document.getElementById('warning').style.color = 'white';
   document.getElementById('warning').style.border = '1px solid #97d7f2'; 
   document.getElementById('warning').style.fontWeight = 'bold';    
   document.getElementById('sendorder').disabled = true;     
   }
}

function unwarningMe(){
   if(document.getElementById('warning')){
   document.getElementById('warning').style.background = '#ededed';
   document.getElementById('warning').style.color = '#000';   
   document.getElementById('warning').style.border = '1px solid #c0c0c0'; 
   document.getElementById('warning').style.fontWeight = 'normal';
   document.getElementById('sendorder').disabled = false;
   }       
}


function table()
{
	      if(document.getElementsByTagName('table')){
	       var tr =  document.getElementsByTagName('tr');
	       for (var i=0;i<tr.length;i++)
	       {
	        tr[i].number = i;
	        tr[i].onmouseover = doit;       
          tr[i].onmouseout = doitback; 
	  	    }
 
	}
}

function doit(){
    number = this.number;
    var tr =   document.getElementsByTagName('tr');
    var as =   tr[number].getElementsByTagName('a');
    if(as.length > 0){
    as[0].style.color = "#FFFFFF";
        }
    tr[number].style.background = "#810A0F";
    tr[number].style.color = "#FFFFFF";

}

function doitback(){
    number = this.number;
    var tr =  document.getElementsByTagName('tr');
    var as = tr[number].getElementsByTagName('a');
    if(as.length > 0){
    as[0].style.color = "#810A0F";
        }
    tr[number].style.background = "transparent"; 
    tr[number].style.color = "#000000";

}


function processRequest()
{
  if (httpRequest.readyState == 4)
  {
    if(httpRequest.status == 200)
    {
      
      var semka = document.getElementById("price");
      semka.innerHTML = httpRequest.responseText;
    }
    else
    {
        alert("Chyba pri nacitani stanky"+ httpRequest.status +":"+ httpRequest.statusText);
    }
  }
}


function checkPrice(){

if(document.getElementById('actualprice').value) { price = parseFloat(document.getElementById('actualprice').value); }
 
     var splits1 = new Array();
     splits1 =  document.getElementById('prijezd').value;
     //splits1 = '17.8.2009';
     var split1parts = splits1.split('.');
     var arrCas=new Date(split1parts[2],split1parts[1],split1parts[0],0,0,0);
     newArrCas = Date.parse(arrCas);
     
     var splits2 = new Array();
     splits2 =  document.getElementById('odjezd').value;
     //splits2 = '27.8.2009';
     var split2parts = splits2.split('.');
     var depCas=new Date(split2parts[2],split2parts[1],split2parts[0],0,0,0);
     newDepCas = Date.parse(depCas);     

     var casFrom=new Date(2009,06,13,0,0,0);
     newCasFrom = Date.parse(casFrom);
     var casTo=new Date(2009,09,14,0,0,0);
     newCasTo = Date.parse(casTo);

 var allin = document.getElementById('of_includeprice');

     if(((newArrCas > newCasFrom)&&(newArrCas < newCasTo))&&((newDepCas > newCasFrom)&&(newDepCas < newCasTo))){
     var one_day=1000*60*60*24;
     var daycount = (newDepCas-newArrCas)/one_day;
      
     if(daycount > 5){
    
     allin.innerHTML  = "V ceně je obsažen balíček all-inclusive.";
     }
     else{
     allin.innerHTML  = "Ubytování s polopenzí.";
     }
     }
     else{
     allin.innerHTML  = "Ubytování s polopenzí.";
     }
 
     
     var adultcount = document.getElementById('adult_count').value;
     var childcount5 = document.getElementById('child_count5').value;
     var childcount10 = document.getElementById('child_count10').value;
     var childcount15 = document.getElementById('child_count15').value;
     var prachypes = 0;
     if(document.getElementById('dog').checked== true || document.getElementById('dog').checked== 'true'){ prachypes = 50; }
     var prirazka = 0;
     if(adultcount==1){  prirazka = 0;  }
 
     if(childcount5){  prirazka = 0;  }
     if(childcount10){  prirazka = 0;  } 
     if(childcount15){  prirazka = 0;  }     


        url='http://www.kladenka.cz/prices.php?fromdate='+splits1+'&todate='+splits2+'&adultcount='+adultcount+'&childcount5='+childcount5+'&childcount10='+childcount10+'&childcount15='+childcount15+'&prirazka='+prirazka+'&prachypes='+prachypes;
        
        //alert(url);
        if (window.ActiveXObject)
        {
          httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
        {
          httpRequest = new XMLHttpRequest();
        }
        httpRequest.open("GET", url, true);

        httpRequest.onreadystatechange= function () {processRequest(); } ;
        httpRequest.send(null);
      


    return true;
} 



function checkboxCheck(){
 
var singleroom = document.getElementById('singleroom');
var doubleroom = document.getElementById('doubleroom');
var db_extrabed = document.getElementById('db_extrabed');
var apt = document.getElementById('apt');

if(singleroom.checked == true){ 
   var singleroom_count = document.getElementById('singleroom_count');
   cls.add(singleroom_count, "required");
   cls.add(singleroom_count, "invalid");   
   }
   else{
   var singleroom_count = document.getElementById('singleroom_count');
   cls.remove(singleroom_count, "required");
   cls.remove(singleroom_count, "invalid");   
   }
   
if(doubleroom.checked == true){ 
   var doubleroom_count = document.getElementById('doubleroom_count');
   cls.add(doubleroom_count, "invalid");
   cls.add(doubleroom_count, "required");
   }
   else{
   var doubleroom_count = document.getElementById('doubleroom_count');
   cls.remove(doubleroom_count, "required");
   cls.remove(doubleroom_count, "invalid");   
   }   
//if(db_extrabed.checked == true){ 
//   var db_extrabed_count = document.getElementById('db_extrabed_count');
//  cls.add(db_extrabed_count, "required");
//   cls.add(db_extrabed_count, "invalid");   

//   }
//   else{
//   var db_extrabed_count = document.getElementById('db_extrabed_count');
//   cls.remove(db_extrabed_count, "invalid");   
//   cls.remove(db_extrabed_count, "required");

   
  // }      
//if(apt.checked == true){ 
//   var apt_count = document.getElementById('apt_count');
  // cls.add(apt_count, "required");
   //cls.add(apt_count, "invalid");   
   //}
   //else{
   //var apt_count = document.getElementById('apt_count');
   //cls.remove(apt_count, "required");
   //cls.remove(apt_count, "invalid");   
   //}       
}




checkForm = {

	
	invalidMsg			: "Formulář není vyplněn správně.\nProsím opravte tato políčka:\n\n %err",
	errorMsg			: "\n %err",
	errors				: [],

	invalidClass		: "invalid",
	requiredClass		: "required",
	outsideInvalidClass	: "outsideInvalid",

	submitOnceClass		: "submitOnce",
	alreadySubmitedClass: "alreadySubmited",
	
	fieldType			: [],
	defaultValue		: [],
	
	// inicializacia skriptu
	init : function () {


    

   
		// ak mame k dispozicii kniznice evt a cls a browser je standards-compliant, mozeme zacat
		if (evt && cls && document.getElementById) {
     table();
     if(document.getElementById('adult_count')){
     var adult_count = document.getElementById('adult_count');
    // var child_count3 = document.getElementById('child_count3');
     var child_count5 = document.getElementById('child_count5');
     var child_count10 = document.getElementById('child_count10'); 
     var child_count15 = document.getElementById('child_count15'); 
     var dog = document.getElementById('dog');       
     var prijezd = document.getElementById('prijezd');
     var odjezd = document.getElementById('odjezd');
     adult_count.onkeyup = checkPrice;
     child_count5.onkeyup = checkPrice;
     child_count15.onkeyup = checkPrice;
     child_count10.onkeyup = checkPrice; 
     adult_count.onclick = checkPrice;
     child_count5.onclick = checkPrice;
     child_count15.onclick = checkPrice;
     child_count10.onclick = checkPrice;  
     prijezd.onclick = checkPrice;
     odjezd.onclick = checkPrice;         
     prijezd.onchange = checkPrice;
     odjezd.onchange = checkPrice;
     prijezd.onkeyup = checkPrice;
     odjezd.onkeyup = checkPrice;
     dog.onclick = checkPrice;
    
     //var singler = document.getElementById('singleroom');
     //var doubler = document.getElementById('doubleroom');
     //singler.onclick = checkboxCheck;
     //doubler.onclick = checkboxCheck;
    }
     


			// prejdeme vsetky formulare a najdeme v nich vsetky fieldy, zavesime potrebne eventy
			



      
      var forms = document.getElementsByTagName("form");
			for (var i = 0; i < forms.length; i++) {
				evt.add(forms[i], "submit", checkForm.checkForm);
				evt.add(forms[i], "reset", checkForm.checkForm);
				
				
				
				var fields = checkForm.getFields(forms[i]);
				for (var j = 0; j < fields.length; j++) {
					evt.add(fields[j], "blur", checkForm.checkField);
					evt.add(fields[j], "focus", checkForm.checkField);
					evt.add(fields[j], "change", checkForm.checkField);
					if ((fields[j].tagName.toLowerCase() == "input") && ((fields[j].type == "text") || (fields[j].type == "password"))) {
						evt.add(fields[j], "keyup", checkForm.checkField);
					}
				}
				
				checkForm.checkForm(forms[i]);
			}
			return true;
		}
		return false;
	},
	

	
	
	// vrati pole obsahujuce vsetky polia, ktore budeme kontrolovat
	getFields : function(frm) {
	

	
		if (frm && frm.getElementsByTagName) {
			var fields = [];
			
			var inputs = frm.getElementsByTagName("input");
				 
			for (var i = 0; i < inputs.length; i++) {
			
				if (
					inputs[i].type == "text" ||
					inputs[i].type == "hidden" ||
					inputs[i].type == "checkbox" ||					
					inputs[i].type == "password"
				) {
					fields[fields.length] = inputs[i];
					
				}
			}
			
			var textareas = frm.getElementsByTagName("textarea");
			for (var i = 0; i < textareas.length; i++) {
				fields[fields.length] = textareas[i];
			}
			
			var selects = frm.getElementsByTagName("select");
			for (var i = 0; i < selects.length; i++) {
				fields[fields.length] = selects[i];
			}

			
			return fields;
		}
		return false;
	},
	
	

	
	
	// preveri validitu vsetkych policok a povoli alebo nepovoli submit
	checkForm : function(frm) {
		if (!frm || !frm.tagName || frm.tagName.toLowerCase() != "form") {
			e = evt.fix(frm);
			frm = e.target;
		} else {
			var e = false;
		}
		
		checkForm.errors = [];
		
		var fields = checkForm.getFields(frm);
		var fieldsOK = true;
		for (var i = 0; i < fields.length; i++) {
			fieldsOK = ((checkForm.checkField(fields[i]) == "valid") && fieldsOK) ? true : false;
		}
		
		if (fieldsOK) {

			// kontrola formularov, ktore sa mozu odosielat iba raz
			if (e && (e.type == "submit") && cls.has(frm, checkForm.submitOnceClass)) {
				if (cls.has(frm, checkForm.alreadySubmitedClass)) {
					e.preventDefault;
					return false;
				} else {
					cls.add(frm, checkForm.alreadySubmitedClass);
				}
			}

			return true;
		} else {
			if (e && (e.type == "reset")) {
				return;
			}
			if (e && (e.type == "submit")) {
				var err = "";
				for (var i = 0; i < checkForm.errors.length; i++) {
					err += checkForm.errorMsg.replace("%err", checkForm.errors[i]);
				}
				//err+= "\nPokoje!";
				alert(checkForm.invalidMsg.replace("%err", err));
				if (e.preventDefault) {
					e.preventDefault();
				}
			}
		}
		
		return false;
	},
	
	// preveri validitu policka a vrati "valid" alebo "invalid"
	checkField : function(elm) {
		if (!elm || !elm.tagName) {
			var e = evt.fix(elm);
			elm = e.target;
		}
		 
		if (!elm)
		{
			return false;
		}
		if ((elm.tagName.toLowerCase() == "input") ||
		(elm.tagName.toLowerCase() == "select") ||
		(elm.tagName.toLowerCase() == "textarea"))
		{
			var fieldOK = true;
			var elmClasses = cls.get(elm);
			for (var i = 0; i < elmClasses.length; i++) {
				if (checkForm.fieldType[elmClasses[i]]) {
					var rule = checkForm.fieldType[elmClasses[i]];
					if (fieldOK && typeof(rule) == "string") {
						
						// pravidlo je string
						if (elm.value != "") {
							fieldOK = (elm.value.search(new RegExp("^([" + rule + "]){1,}$")) < 0) ? false : true;
						}
						
					} else if (fieldOK && ((typeof(rule) == "function") || (typeof(rule) == "object")) && rule.source) {
						// Mozilla vracia RegExpu typ "function", zatial co ostatne browsery "object"
						
						// pravidlo je regExp
						if (elm.value != "") {
							fieldOK = (elm.value.search(rule) < 0) ? false : true;
						}
						
					} else if (fieldOK && (typeof(rule) == "function") && rule.prototype) {
						
						// pravidlo je funkcia
						fieldOK = rule(e, elm);
						
					}
					if (elmClasses[i] == 'required' && elm.type == 'checkbox')
					{
						if (elm.checked != 'true' && elm.checked != true)
						{
							fieldOK = false;
						}
					}
				}

				/* default value
				if (e && checkForm.defaultValue[elmClasses[i]]) {
					var val = checkForm.defaultValue[elmClasses[i]];
					if ((e.type == "focus") && (elm.value == "")) {
						elm.value = val;
					}
					if ((e.type == "blur") && (elm.value == val)) {
						elm.value = "";
					}
				}
				*/
			}

			
			var outsideValidationOK = !cls.has(elm, checkForm.outsideInvalidClass);


			if (fieldOK && outsideValidationOK) {
				cls.remove(elm, "invalid");
			} else {
				cls.add(elm, "invalid");
				checkForm.errors[checkForm.errors.length] = checkForm.getFieldErrorMsg(elm);
				//(elm.checkFormErr) ? elm.checkFormErr : (elm.title) ? elm.title : (elm.name) ? elm.name : elm.toString();
			}
			
			return (fieldOK && outsideValidationOK) ? "valid" : "invalid";
		}
		
		return false;
	},
	
	// prida novy typ policka
	addFieldType : function(cls, rule, defaultValue) {
		if (cls && (rule || defaultValue)) {
			if (rule) {
				checkForm.fieldType[cls] = rule;
			}
			if (defaultValue) {
				checkForm.defaultValue[cls] = defaultValue;
			}
			return true;
		}
		return false;
	},
	
	getFieldErrorMsg : function(elm) {
		if (elm) {
			if (elm.checkFormErrorMsg) {
				return elm.checkFormErrorMsg;
			}
			if (elm.title) {
				return elm.title;
			}
			if (elm.id) {
				var labels = document.getElementsByTagName("label");
				for (var i = 0; i < labels.length; i++) {
					if (labels[i].attributes["for"] && (labels[i].attributes["for"].value == elm.id)) {
						// Opera nezvlada atribut "for"
						var str = checkForm.getNodeText(labels[i]);
						return str;
					}
				}
				return elm.id;
			}
			if (elm.name) {
				return elm.name;
			}
			return elm.toString();
		}
		return false;
	},
	
	getNodeText : function(node) {
		var str = "";
		if (node && node.hasChildNodes()) {
			for (var i = 0; i < node.childNodes.length; i++) {
				// TODO: skladanie toho stringu treba urobit nejak systemovejsie a prehladnejsie
				str += (node.childNodes[i].nodeType == 3) ? node.childNodes[i].nodeValue : checkForm.getNodeText(node.childNodes[i]);
				if ((node.childNodes[i].nodeType == 1) && (node.childNodes[i].tagName.toLowerCase() == "img") && (node.childNodes[i].attributes["alt"])) {
					str += node.childNodes[i].attributes["alt"].value;
				}
			}
		}
		return str;
	}
	
}

/* basic field types */

// required field
checkForm.addFieldType(
	"required",
	function(evt, elm) {
		if (elm) {
			if (elm.tagName.toLowerCase() == "select") {
				return (elm.value) ? true : false;
			} else {
				return (elm.value.search(/\S/) < 0) ? false : true;
			}
		}
		return false;
	}
);

// numbers only
checkForm.addFieldType(
	"numbers",
	"123456789"
);

// IDs - numbers divided by space
checkForm.addFieldType(
	"ids",
	new RegExp("^[0-9 ]{1,}$")
);

// safe characters (alphanumeric, numbers and underscore)
checkForm.addFieldType(
	"safeChars",
	new RegExp("^[a-zA-Z0-9_]{1,}$")
);

// date

// jednoducha kontrola pomocou regExp
/* 
checkForm.addFieldType(
	"date",						// in format (D)D.(M)M.YYYY
	new RegExp("^[0-9]{1,2}[.][0-9]{1,2}[.][0-9]{4}$")
);
*/

// komplexnejsia kontrola pomocou funkcie (pocty dni v mesiaci, prestupne roky a pod.)
checkForm.addFieldType(
	"date",
	function (evt, elm) {
		if (!elm.value) {return true;}

		var date = elm.value.split(".");
		var day = date[0];
		var month = date[1];
		var year = date[2];
		if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {
			// mesiac
			if ((month > 12) || (month < 1)) {return false;}
			
			// dni
			if (day < 1) {return false;}
			
			var maxDays = 31;
			if (month == 2) {maxDays = (year%4 == 0) ? 29 : 28;} // kontrola prestupneho roku
			if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {maxDays = 30;}

			if (day > maxDays) {return false;}
			
			return true;
		}
		return false;
	}
);

// URL
checkForm.addFieldType(
	"url",
	new RegExp("^\\w+://(([\\w\\+\\.\\-]+\\b)(:\\w+)@)?([/\\w\\+\\.\\-]+\\b)(\/{1})?(\\?[\\w\\+\\.\\-/;\\&@=]+\\b)?(#[\\w\\-%]+\\b)?$"),
	//   protokol^      ^user       password^       ^server   konc. slash^       ^parametry (?)                 ^relativní odkaz (#)                                                
	//new RegExp("^[http|https|ftp]:\/\/[a-zA-Z0-9]+([-_\.]?[a-zA-Z0-9])*\.[a-zA-Z]{2,4}(\/{1}[-_~&=\?\.a-z0-9]*)*$"),
	"http://"
);

//domain
checkForm.addFieldType(
	"domain",
new RegExp("^[a-zA-Z0-9]+([-_\.]?[a-zA-Z0-9])*\.[a-zA-Z]{2,4}(\/{1}[-_~&=\?\.a-z0-9]*)*$")
);

// e-mail
checkForm.addFieldType(
	"email",
	new RegExp("^([\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)*@[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)+$")
	//new RegExp("^[a-z0-9]+[a-z0-9\._-]*[a-z0-9]+@[a-z0-9]+[a-z0-9\._-]*[a-z0-9]+\.[a-z]{2,4}$")
	//new RegExp("^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9\._-]*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$")
);



// zavolanie inicializacie checkForm-u pri zavedeni dokumentu
evt.add(window, "load", checkForm.init);


