function test(cal) { // Pilnuje, zeby data koncowa nie byla mniejsza od poczatkowej
       var date = cal.date;
       var to = document.getElementById("to");
       var from = document.getElementById("from");
       var first = from.value.split("/");
       var second = to.value.split("/");
       var field = new Date(first[2], first[0]-1, first[1]);
       var field2 = new Date(second[2], second[0]-1, second[1]);
       if (field2.getTime() <= field.getTime() || (from.value == "" || to.value =="")) {
       		/*var time = date.getTime();
		var date2 = new Date(time);
		var date3 = new Date(time + Date.DAY);
       		from.value = date3.print("%m/%d/%Y");
		to.value = date2.print("%m/%d/%Y");*/
                var time = date.getTime();
		var date2 = new Date(time);
		if (from.value == "") {
                    var date3 = new Date(time - Date.DAY);
                    from.value = date3.print("%m/%d/%Y");
                    to.value = date2.print("%m/%d/%Y");
                } else {
		     var date3 = new Date(time + Date.DAY);
		     to.value = date3.print("%m/%d/%Y");
		     from.value = date2.print("%m/%d/%Y");
                }
	}
}

function test2(cal) { // Pilnuje, zeby data koncowa nie byla mniejsza od poczatkowej
       /*var date = cal.date;
       var field = document.getElementById("(txt)(req)booking_to");
       var field2 = document.getElementById("(txt)(req)booking_from");
       if (field.value < field2.value) {
       		var time = date.getTime();
		var date2 = new Date(time);
		var date3 = new Date(time + Date.DAY);
       		field.value = date3.print("%m/%d/%Y");
		field2.value = date2.print("%m/%d/%Y");
	}*/
       var date = cal.date;
       var to = document.getElementById("(txt)(req)booking_to");
       var from = document.getElementById("(txt)(req)booking_from");
       var first = from.value.split("/");
       var second = to.value.split("/");
       var field = new Date(first[2], first[0]-1, first[1]);
       var field2 = new Date(second[2], second[0]-1, second[1]);
       if (field2.getTime() <= field.getTime() || (from.value == "" || to.value =="")) {
       		/*var time = date.getTime();
		var date2 = new Date(time);
		var date3 = new Date(time + Date.DAY);
       		from.value = date3.print("%m/%d/%Y");
		to.value = date2.print("%m/%d/%Y");*/
                var time = date.getTime();
		var date2 = new Date(time);
		if (from.value == "") {
                    var date3 = new Date(time - Date.DAY);
                    from.value = date3.print("%m/%d/%Y");
                    to.value = date2.print("%m/%d/%Y");
                } else {
		     var date3 = new Date(time + Date.DAY);
		     to.value = date3.print("%m/%d/%Y");
		     from.value = date2.print("%m/%d/%Y");
                }
	}
}

function testFN(cal) { // Pilnuje, zeby data koncowa nie byla mniejsza od poczatkowej
       var date = cal.date;
       var to = document.getElementById("fm-to");
       var from = document.getElementById("fm-from");
       var first = from.value.split("/");
       var second = to.value.split("/");
       var field = new Date(first[2], first[0]-1, first[1]);
       var field2 = new Date(second[2], second[0]-1, second[1]);
       if (field2.getTime() <= field.getTime() || (from.value == "" || to.value =="")) {
       		/*var time = date.getTime();
		var date2 = new Date(time);
		var date3 = new Date(time + Date.DAY);
       		from.value = date3.print("%m/%d/%Y");
		to.value = date2.print("%m/%d/%Y");*/
                var time = date.getTime();
		var date2 = new Date(time);
		if (from.value == "") {
                    var date3 = new Date(time - Date.DAY);
                    from.value = date3.print("%m/%d/%Y");
                    to.value = date2.print("%m/%d/%Y");
                } else {
		     var date3 = new Date(time + Date.DAY);
		     to.value = date3.print("%m/%d/%Y");
		     from.value = date2.print("%m/%d/%Y");
                }
	}
}


// Umozliwia przenoszenie wartosci pomiedzy polami wielokrotnego wyboru
j=0;
function przenies(f1, f2) {
  if (f1.selectedIndex>=0) {
    f2.options[f2.options.length] =
      new Option(f1[f1.selectedIndex].text, f1[f1.selectedIndex].value);
    f1[f1.selectedIndex]=null;
    f1.selectedIndex=-1;
  }
}

// Zapisuje dane dla pola wielokrotnego wyboru
function wyslij(f) {
  for(i=0;i<f.options.length;i++) f.options[i].selected = true;
}


// Pobiera dane za pomoca Ajax
function pobierz(from, to, apartment, ppl, result, fields, pps, season, xmler, minstay) {
	data1 = document.getElementById(from);
	data2 = document.getElementById(to);
	apart = document.getElementById(apartment);
	people = document.getElementById(ppl);
	
	element = document.getElementById(result);
	error = document.getElementById("ccardValid");
	plik="calc.php5?from="+data1.value+"&to="+data2.value+"&apart="+apart.value+"&people="+people.value;
	//alert(plik);
xml = null;
  //element.innerHTML="";
  try {
    xml = new ActiveXObject("Microsoft.XMLHTTP"); // IE
  } catch(e) {
    try {
      xml = new XMLHttpRequest(); // Mozilla/FireFox/Opera
      
    } catch(e) {
      xml = null;

    }
  }
  if (xml != null) {
    xml.onreadystatechange = function() {
      if (xml.readyState==4) {
	      //alert(xml.responseText);
      	//result = str2array(xml.responseText, ":");
	if(xml.responseText == "-1" || xml.responseText == "-2" || xml.responseText == "-3") {
		if (xml.responseText == '-1') {
			error.innerHTML = fields;
			error.className = 'miniError';
		} else {
			if (xml.responseText == '-2') {
				error.innerHTML = pps;
				error.className = 'miniError';
			} else {
				if (xml.responseText == '-3') {
				error.innerHTML = season;
				error.className = 'miniError';
				}
			}
		}
	} else {
		if (parseFloat(xml.responseText) < 0) {
			error.innerHTML = minstay;
			error.className = 'miniError';
			element.value=xml.responseText;
		} else {
			error.innerHTML = '';
			error.className = '';
		      element.value=xml.responseText;
		}
	}
        //element.innerHTML=xml.responseText;
        //element.appendChild(xml.responseText);
        //element.options[0] = new Option(element.options[0].text, element.options[0].value);
        //element.options[1] = new Option(element.options[1].text, element.options[1].value);
	//tekst = "Suma: "+result[0]+", mieszkanie: "+result[1]+", sprzatanie: "+result[2];
	//element.innerHTML=tekst;
	//alert(result[0]);
        
      }
    }
    xml.open("GET", plik, true);
    xml.send(null);
  }
  return false;
}


function getPrice(fields, people, season, xml, minstay) {
	el = document.getElementById("(float)(req)price");
	pobierz("(txt)(req)booking_from","(txt)(req)booking_to","(int)(req)apartment","(int)(req)bpeople","(float)(req)price", fields, people, season, xml, minstay);
	el.focus();
}
function menu(x) {
	if (document.getElementById)
	{
	// this is the way the standards work
	for(i = 1; i < 8; i++) {
		var style2 = document.getElementById('menuEl'+i).style;
		var style3 = document.getElementById('parent'+i);
		if (style3) style3.className = 'regularMenu';
		style2.display = style2.display? "none":"none";
	}
	var style2 = document.getElementById('menuEl'+x).style;
	var style3 = document.getElementById('parent'+x);
	style2.display = style2.display? "":"block";
	//style3.style.border = '0px';
	style3.className = 'hoverMenu';
	}
	/*else if (document.all)
	{
	// this is the way old msie versions work
	var style2 = document.all[whichLayer].style;
	style2.display = style2.display? "":"block";
	}
	else if (document.layers)
	{
	// this is the way nn4 works
	var style2 = document.layers[whichLayer].style;
	style2.display = style2.display? "":"block";
	}*/
}

function viewToggle(x) {
	if (document.getElementById)
	{
	// this is the way the standards work
	for(i = 1; i < 3; i++) {
		var style2 = document.getElementById('resView'+i).style;
		var style3 = document.getElementById('resViewPar'+i);
		if (style3) style3.className = 'resView';
		style2.display = style2.display? "none":"none";
	}
	var style2 = document.getElementById('resView'+x).style;
	var style3 = document.getElementById('resViewPar'+x);
	style2.display = style2.display? "":"block";
	//style3.style.border = '0px';
	style3.className = 'resViewHover';
	}
	/*else if (document.all)
	{
	// this is the way old msie versions work
	var style2 = document.all[whichLayer].style;
	style2.display = style2.display? "":"block";
	}
	else if (document.layers)
	{
	// this is the way nn4 works
	var style2 = document.layers[whichLayer].style;
	style2.display = style2.display? "":"block";
	}*/
}

var from = new Date();
var to = new Date(from.getYear(), from.getMonth(), from.getDay(), from.getHours(), from.getMinutes()+30, from.getSeconds());
function sessionCounter() {
		div = document.getElementById('sessionCounter');
		if (div) {
			if ((to.getMinutes() - from.getMinutes() == 0) && (to.getSeconds() - from.getSeconds() == 0)) {
				div.innerHTML = 'Session timeout';
			} else {
				var temp = new Date();
				stunden = min = Math.floor((to-from)/(60*60*1000));
				temp.setTime(from.getTime()+stunden*60*60*1000);
				min=Math.floor((to-temp)/(60*1000));
				temp.setTime(temp.getTime()+min*60*1000);
				sec=Math.floor((to-temp)/1000);
				if(sec < 0) sec = sec * (-1);
				if(sec < 10) sec = '0'+sec;
				if(min < 10) min = '0'+min;
				div.innerHTML = min+':'+sec;
				from.setTime(from.getTime() + 1000);
				setTimeout('sessionCounter()', 1000);
			}
		}
}


function ccardValid(error) {
	value = document.getElementById('(txt)ccardNr').value;
	field = document.getElementById('(int)ccardType');
	info = document.getElementById('ccardValid');
	if (value.charAt(0) == '3' && (value.charAt(1) == '4' || value.charAt(1) == '7')) {
		field.selectedIndex = 2;
		if (value.length != 15) {
			info.innerHTML = error;
			info.className = 'miniError';
		} else { 
			if (luhn_check(value)) info.innerHTML = '';
		}
	} else { 
		if (value.charAt(0) == '5' && (value.charAt(1) == '1' || value.charAt(1) == '2' || value.charAt(1) == '3' || value.charAt(1) == '4' || value.charAt(1) == '5')) {
		field.selectedIndex = 3;
		if (value.length != 16) {
			info.innerHTML = error;
			info.className = 'miniError';
		} else {
			if (luhn_check(value)) info.innerHTML = '';
		}
		} else { 
			if (value.charAt(0) == '4') {
				field.selectedIndex = 4;
				if (value.length != 13 && value.length != 16) {
					info.innerHTML = error;
					info.className = 'miniError';
				} else { 
					if (luhn_check(value)) info.innerHTML = '';
				}
			} else {
				field.selectedIndex = 0;
				if (value == '') {
					info.innerHTML = '';
				} else {
					info.innerHTML = error;
					info.className = 'miniError';
				}
			}
			
		}
	}
}

function luhn_check(card_number)
{
	cc_array = card_number.split();
	
	digit_string = ""
	
	for ( counter=cc_array.length-1; counter >= 0; counter-- )
	{
		current_digit = parseInt( cc_array[counter] )
		
		if (counter %2 == 0)
		{
			cc_array[counter] *= 2
			if(cc_array[counter] > 9) {
				cc_array[counter] -= 9; // equivalent to adding the value of digits
			}
		}
		
		digit_string += cc_array[counter]
	
	}
	
	digit_sum = 0
	
	for ( counter=digit_string.length-1; counter>=0; counter-- )
	{
		current_digit = parseInt( digit_string.charAt(counter) )
		digit_sum += current_digit
	}
	//alert(digit_string);
	if ( digit_sum % 10 == 0 )
	{
		return true
	}
	else
	{
		return false
	}

}


function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function testDate(cal) { // Pilnuje, zeby data koncowa nie byla mniejsza od poczatkowej
       var date = cal.date;
       var field = document.getElementById("(txt)(req)date_to");
       var field2 = document.getElementById("(txt)(req)date_from");
       if (field.value < field2.value) {
       		var time = date.getTime();
		var date2 = new Date(time);
		var date3 = new Date(time + Date.DAY);
       		field.value = date3.print("%Y-%m-%d");
		field2.value = date2.print("%Y-%m-%d");
	}
}

function toggle(x, y) {
	if (document.getElementById)
	{
	// this is the way the standards work
	var style2 = document.getElementById(x).style;
	var style3 = document.getElementById(y).style;
	style2.display = style2.display == "block" ? "none":"block";
	style3.display = style3.display == "block" ? "none":"block";
	}
}
/*
function up(obj)
{
  var current;
  var reverse;
  if(obj.options[obj.options.selectedIndex].index > 0)
  {
    current = obj.options[obj.options.selectedIndex].text;
    reverse = obj.options[obj.options[obj.options.selectedIndex].index-1].text;
    obj.options[obj.options.selectedIndex].text = reverse;
    obj.options[obj.options[obj.options.selectedIndex].index-1].text = current;
    self.focus();
    obj.options.selectedIndex--;
  }
}

function down(obj)
{
  var current;
  var next;
  if(obj.options[obj.options.selectedIndex].index != obj.length-1)
  {
    current = obj.options[obj.options.selectedIndex].text;
    next = obj.options[obj.options[obj.options.selectedIndex].index+1].text;
    obj.options[obj.options.selectedIndex].text =  next;
    obj.options[obj.options[obj.options.selectedIndex].index+1].text = current;
    self.focus();
    obj.options.selectedIndex++;
  }
}*/
/*
function move(to) {
	var list = document.getElementById('(array)sort[]');
	var index = list.selectedIndex;
	var total = list.options.length-1;
	if (index == -1) return false;
	if (to == +1 && index == total) return false;
	if (to == -1 && index == 0) return false;
	var items = new Array;
	var values = new Array;
	for (i = total; i >= 0; i--) {
	items[i] = list.options[i].text;
	values[i] = list.options[i].value;
	}
	for (i = total; i >= 0; i--) {
	if (index == i) {
	list.options[i + to] = new Option(items[i],values[i + to], 0, 1);
	list.options[i] = new Option(items[i + to], values[i]);
	i--;
	}
	else {
	list.options[i] = new Option(items[i], values[i]);
	   }
	}
	list.focus();
}
*/
function wyslijOrder(list, f) {
	var theList = "";
	field = document.getElementById(f);
	// start with a "?" to make it look like a real query-string
	for (i = 0; i <= list.options.length-1; i++) { 
	theList += list.options[i].value;
	// a "&" only BETWEEN the items, so not at the end
	if (i != list.options.length-1) theList += ":";
	}
	field.value = theList;
}

function checkBookForm() {
       var err = new Array();
       var errfld = new Array();
       if (document.getElementById('fm-firstname').value == '') { err.push('First name'); errfld.push('fm-firstname'); };
       if (document.getElementById('fm-lastname').value == '') { err.push('Last name'); errfld.push('fm-lastname'); };
       if (document.getElementById('fm-addr').value == '') { err.push('Address'); errfld.push('fm-addr'); };
       if (document.getElementById('fm-city').value == '') { err.push('City'); errfld.push('fm-city'); };
       if (document.getElementById('fm-country').value == '') { err.push('Country'); errfld.push('fm-country'); };
       if (document.getElementById('fm-state').value == '') { err.push('State'); errfld.push('fm-state'); };
       if (document.getElementById('fm-zipcode').value == '') { err.push('ZIP code'); errfld.push('fm-zipcode'); };
       if (document.getElementById('fm-telephone').value == '') { err.push('Telephone'); errfld.push('fm-telephone'); };
       if (document.getElementById('email').value == '') { err.push('E-mail'); errfld.push('email'); };
       if (!document.getElementById('fm-policy').checked) { err.push('Rental agreement checkbox'); errfld.push('fm-policy-text'); };
       var x = document.getElementById('booking_information');
       if (err.length > 0) {
              x.innerHTML = 'The following fields are obligatory and have to be filled in:<br/>';
              for(i = 0; i < err.length; i++) {
                     x.innerHTML += err[i] + ', ';
                     if (errfld[i] == 'fm-country' || errfld[i] == 'fm-state' || errfld[i] == 'fm-policy-text') document.getElementById(errfld[i]).style.color = '#B54242';
                     else document.getElementById(errfld[i]).style.backgroundColor = '#B54242';
              }
              window.scrollTo(0, 300);
              return false;
       } else {
              x.innerHTML = '';
              return true;
       }
}

function isDateInPast() {
       var from = document.getElementById("from");
       var to = document.getElementById("to");

       var first = to.value.split("/");
       var second = from.value.split("/");
       var field = new Date(first[2], first[0]-1, first[1]);
       var field2 = new Date(second[2], second[0]-1, second[1]);
       var today = new Date();
       var today2 = new Date(today.getFullYear(), today.getMonth(), today.getDate());
       //alert(today2);
       today = today2.getTime();
       //alert(today + ' ' + field2.getTime());
       return (field.getTime() < today || field2.getTime() < today);
}

function datesCompare() {
       var from = document.getElementById("from");
       var to = document.getElementById("to");

       var first = to.value.split("/");
       var second = from.value.split("/");
       var field = new Date(first[2], first[0]-1, first[1]);
       var field2 = new Date(second[2], second[0]-1, second[1]);
       //alert(today + ' ' + field2.getTime());
       return (field.getTime() < field2.getTime());
}