7/*- zmena obrazku -*/
function changeThumbs(box,bigimg) {
   var box = getElem(box);
   var bigimg = getElem(bigimg);
   if (!box || !bigimg) return;
   thumbs = box.getElementsByTagName('a');
   for (var i = 0; i < thumbs.length; i ++) {
      a = thumbs[i];
      a.onclick = function (e) {
         for (var k = 0; k < thumbs.length; k ++) {
            s = thumbs[k];
            remClass(s, 'active', true);
         }
         addClass(this, 'active', false);
         bigimg.src = bigimg.name+this.name;
         /*
         // vhodne pro pomale pripojeni, jinak problikava, lepsi nechat
         bigimg.style.visibility='hidden';
         bigimg.src = bigimg.name+this.name;
         bigimg.onload = function xxx(){
            bigimg.style.visibility='';
         };
         */
         return false;
      }
   }
}

/*- pouze cisla do inputu -*/
function checkNumberInput(class_name) {
   var number_input = getElementsByClass(class_name,'input');
   if (!number_input) return;
   for (var i = 0; i < number_input.length; i ++) {
      obj = number_input[i];
      obj.onkeyup = function checkNumber(e) {
      	var nums = new RegExp('^[0-9]+$');
      	var x1 = this.value;
      	if (x1!='' && x1.match(nums)==null) {
      		this.value = (isNaN(parseInt(x1))) ? '': parseInt(x1);
      	}
      }
   }
}

/*- pouze cisla do inputu -*/
function disableLinks(class_name) {
   var links = getElementsByClass(class_name,'a');
   if (!links) return;
   for (var i = 0; i < links.length; i ++) {
      obj = links[i];
      obj.onclick = function(){
         alert('Under construction.');
         return false;
      }
   }
}

/*- souhlas s podminkami -*/
function acceptTerms(checkbox, submit) {
   var checkbox = getElem(checkbox);
   var submit = getElem(submit);
   if (!checkbox || !submit) return;
   if (checkbox.checked) submit.disabled='';
   else submit.disabled='true';
   checkbox.onclick = function(){
      if(checkbox.checked) {
         submit.disabled='';
      } else {
         submit.disabled='true';
      }
   }
}

/*- kontrola emailu -*/
function checkMail(id) {
   var obj = getElem(id);
   if (!obj) return;
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (obj.value.match(filter)) {
	   return true;
   } else {
      alert('Incorrect email address');
	   obj.focus();
      return false;
   } 
}

/*- book now link -*/
function bookLink(alink, box) {
   var alink = getElem(alink);
   var box = getElem(box);
   if (!alink || !box) return;
   alink.onclick = function(){
      //box.focus(); // nefachá na DIV?
      window.scrollTo(box.offsetLeft,box.offsetTop)
      //addClass(box,'target',false)
      return false;
   }
}

/*- calendar -*/
function calendar(input1,input2,trigger1,trigger2,frmt){
   var trigger1x = getElem(trigger1);
   var trigger2x = getElem(trigger2);

   var input1x = getElem(input1);
   var input2x = getElem(input2);
   var dateformat = frmt;


   if (!input1x || !input2x) return;
   
      trigger1x.style.display='inline';
      trigger2x.style.display='inline';

			var startDate;
			var endDate;
			var callbacks = 0;

			function resetDates() {
				startDate = endDate = null;
			}


			/*
			* Given two dates (in seconds) find out if date1 is bigger, date2 is bigger or
			 * they're the same, taking only the dates, not the time into account.
			 * In other words, different times on the same date returns equal.
			 * returns -1 for date1 bigger, 1 for date2 is bigger 0 for equal
			 */

			function compareDatesOnly(date1, date2) {
				var year1 = date1.getYear();
				var year2 = date2.getYear();
				var month1 = date1.getMonth();
				var month2 = date2.getMonth();
				var day1 = date1.getDate();
				var day2 = date2.getDate();

				if (year1 > year2) {
					return -1;
				}
				if (year2 > year1) {
					return 1;
				}

				//years are equal
				if (month1 > month2) {
					return -1;
				}
				if (month2 > month1) {
					return 1;
				}

				//years and months are equal
				if (day1 > day2) {
					return -1;
				}
				if (day2 > day1) {
					return 1;
				}

				//days are equal
				return 0;


				/* Can't do this because of timezone issues
				var days1 = Math.floor(date1.getTime()/Date.DAY);
				var days2 = Math.floor(date2.getTime()/Date.DAY);
				return (days1 - days2);
				*/
			}

			function filterDates1(cal) {
				startDate = cal.date;
				/* If they haven't chosen an 
				end date before we'll set it to the same date as the start date This
				way if the user scrolls in the start date 5 months forward, they don't
				need to do it again for the end date.
				*/

				if (endDate == null) { 
					Zapatec.Calendar.setup({
						inputField     :    input2,
						button         :    trigger2,  // What will trigger the popup of the calendar
						ifFormat       :    dateformat,
						timeFormat     :    "24",
						date           :    startDate,
						electric       :    false,
						showsTime      :    false,          //no time
						disableFunc    :    dateInRange2, //the function to call
						onUpdate       :    filterDates2,
						firstDay       :    1
					});
					input2x.value=input1x.value;
				}
			}

			function filterDates2(cal) {
				endDate = cal.date;
			}

			/*
			* Both functions disable and hilight dates.
			*/
			
			/* 
			* Can't choose days after the
			* end date if it is choosen, hilights start and end dates with one style and dates between them with another
			*/
			function dateInRange1(date) {

				if (endDate != null) {

					// Disable dates after end date
					var compareEnd = compareDatesOnly(date, endDate);
					if  (compareEnd < 0) {
						return (true);
					}

					// Hilight end date with "edges" style
					if  (compareEnd == 0) {
						{return "edges";}
					}


					// Hilight inner dates with "between" style
					if (startDate != null){
						var compareStart = compareDatesOnly(date, startDate);
						if  (compareStart < 0) {
							return "between";
						} 
					} 
				}

				//disable days prior to today
				var today = new Date();
				var compareToday = compareDatesOnly(date, today);
				if (compareToday > 0) {
					return(true);
				}


				//all other days are enabled
				return false;
				//alert(ret + " " + today + ":" + date + ":" + compareToday + ":" + days1 + ":" + days2);
				return(ret);
			}

			/* 
			* Can't choose days before the
			* start date if it is choosen, hilights start and end dates with one style and dates between them with another
			*/

			function dateInRange2(date) {
				if (startDate != null) {
					// Disable dates before start date
					var compareDays = compareDatesOnly(startDate, date);
					if  (compareDays < 0) {
						return (true);
					}

					// Hilight end date with "edges" style
					if  (compareDays == 0) {
						{return "edges";}
					}

					// Hilight inner dates with "between" style
					if ((endDate != null) && (date > startDate) && (date < endDate)) {
						return "between";
					} 
				} 

				var now = new Date();
				if (compareDatesOnly(now, date) < 0) {
					return (true);
				}

				//all other days are enabled
				return false;
			}

		var cal = new Zapatec.Calendar.setup({
		
				inputField     :    input1,   // id of the input field
				button         :    trigger1,  // What will trigger the popup of the calendar
				ifFormat       :    dateformat,       // format of the input field
				timeFormat     :    "24",
				showsTime      :     false,          //no time
				electric       :     false,
				dateStatusFunc :    dateInRange1, //the function to call
				onUpdate       :    filterDates1,
				firstDay       :    1
		});
		
			Zapatec.Calendar.setup({
				inputField     :    input2,
				button         :    trigger2,  // What will trigger the popup of the calendar
				ifFormat       :    dateformat,
				timeFormat     :    "24",
				showsTime      :     false,          //no time
				electric       :     false,
				dateStatusFunc :    dateInRange2, //the function to call
				onUpdate       :    filterDates2,
				firstDay       :    1
			});
}


function obrazek(title,url, x, y)
{
	var okno = window.open('', '', 'width='+x+',height='+y);
	okno.innerWidth = x;
	okno.innerHeight = y;
	okno.document.write('<html><head><title>'+title+'</title></head>');
	okno.document.write('<body style="margin:0; padding:0;"><img src="'+url+'" width="'+x+'" height="'+y+'" onClick="window.close();" alt="Zavřit okno"></body></html>');
	return false;
}
