var roomoptions=new Array();
var roomprices=new Array();
var pictures='';


function ajaxFunction(){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function() {
		if(ajaxRequest.readyState == 4) {
			
			var response = ajaxRequest.responseText;
			
			removeAllOptions(document.reservation.roomid);
			removeAllOptions(document.reservation.rooms);
			
			parts = response.split('***'); 
			
			for (i=0; i<parts.length; i++) {
				roomvalues = parts[i].split('|');
				
				addOption(document.reservation.roomid, roomvalues[0], roomvalues[1]); //id , title
						
				var tmp=roomvalues[3].split('*'); 
				roomprices[roomvalues[0]]=new Array();
				
				for (j=0; j<tmp.length; j++){
					roomprices[roomvalues[0]][j]=tmp[j].split(';'); 
				}
				
				roomoptions[roomvalues[0]]=new Array();
				
				roomoptions[roomvalues[0]][0]=roomvalues[1]; //pok name
				roomoptions[roomvalues[0]][1]=parseInt(roomvalues[2]);		//max rooms
				roomoptions[roomvalues[0]][2]=roomvalues[4]; //normal price
				roomoptions[roomvalues[0]][3]=roomvalues[5]; //room description
			}
			updateRoom();
			updateHotelHours();
			updatePictures();
			updatePayment();
		}
		
	}
	//alert('/prices/'+document.getElementById('hotel').value);
	ajaxRequest.open('GET', '/prices/'+document.getElementById('hotel').value, true);
	ajaxRequest.send(null); 
	
}


function updatePayment() {	
	updatePriceTable();
	
	if (document.getElementById('needtrans1').checked) {
		var needtransport=true;
		document.getElementById('transferhours').style.display='block';
		updateTransferHours();
	} else {
		var needtransport=false;
		document.getElementById('transferhours').style.display='none';
	}
	
	var roomid = document.reservation.roomid.options[document.reservation.roomid.selectedIndex].value;
	
	var dzien=document.reservation.data_go.value;
	var czas=document.reservation.hour_go.options[document.reservation.hour_go.selectedIndex].value;
	var dzienret=document.reservation.data_ret.value;
	var czasret=document.reservation.hour_ret.options[document.reservation.hour_ret.selectedIndex].value;
	
	if (dzien && dzienret){
		var hours=getHours(document.getElementById('hotel').options[document.getElementById('hotel').selectedIndex].value);
		
		var time = new Date(strtotime(dzien+' '+czas));
		var timestart = time.getTime()/1000;
		
		var time = new Date(strtotime(dzienret+' '+czasret));
		var timeend = time.getTime()/1000;
		
		var time = new Date(strtotime(dzien+' '+hours[0]));
		var sttime = time.getTime()/1000;
		
		var time = new Date(strtotime(dzienret+' '+hours[1]));
		var entime = time.getTime()/1000;
		
		var time = new Date(strtotime(dzien+' 00:00:01'));
		var forstart = time.getTime()/1000;
		if (timestart < sttime) {
			var dstart = 1;
			forstart-=86400;
		}
		
		var time = new Date(strtotime(dzienret+' 00:00:01'));
		var forend = time.getTime()/1000;			
		if (entime < timeend) {
			var dend = 1;
		} else 
			forend-=86400;
		
		var time = new Date(strtotime(dzien+' '+hours[0]));
		var daystart = time.getTime()/1000;
		
		var time = new Date(strtotime(dzienret+' '+hours[1]));
		var dayend = time.getTime()/1000;
		
		if (dayend>daystart) {
			var days=Math.ceil((dayend-daystart)/86400);
			if (dstart==1) days++;
			if (dend==1) days++;
			
			document.getElementById('staydayslabel').innerHTML = days+' dni';
			document.getElementById('staydays').value = days;
		} else return false;
		
		var payment=0;
		
		for (j=forstart; j<=forend; j+=86400) {
			var price=null;
			for (i=0; i<roomprices[roomid].length; i++) {
				if (j>roomprices[roomid][i][0] && j<roomprices[roomid][i][1]) {
					if (price && price>roomprices[roomid][i][2])
						var price=parseFloat(roomprices[roomid][i][2]);	
					else if (!price)
						var price=parseFloat(roomprices[roomid][i][2]);	
				} else if (roomprices[roomid][i][0]) {
					var time = new Date(j*1000);
					if (roomprices[roomid][i][0]==(time.getDay())){
						var price=parseFloat(roomprices[roomid][i][2]);	
					} 
				}
			}

			if (!price) var price=parseFloat(roomoptions[roomid][2]);
			payment+=price;
		}
	}
	
	if (payment) {
		var price=round_number(payment/days,2);
		document.getElementById('pricelabel').innerHTML=(price+'').replace('.',',')+' zł';
		document.reservation.price.value=price;
	}
	var transprice=0;
	if (needtransport) {
		if (document.reservation.fromairport.checked) {
			document.getElementById('fromairtrans').style.display='block';
			transprice+=getTransferPrice(document.getElementById('hotel').options[document.getElementById('hotel').selectedIndex].value)
		} else
			document.getElementById('fromairtrans').style.display='none';
		
		if (document.reservation.toairport.checked) {
			document.getElementById('toairtrans').style.display='block';
			transprice+=getTransferPrice(document.getElementById('hotel').options[document.getElementById('hotel').selectedIndex].value)
		} else
			document.getElementById('toairtrans').style.display='none';
	}	
	
	var roomnum = parseInt(document.getElementById('rooms').options[document.getElementById('rooms').selectedIndex].value);
	payment *= roomnum;
	payment+=transprice;
	var plabel='';
	var plabel1='';
	if (payment && roomnum && days){
		plabel1+='<strong>'+(payment+'').replace('.',',')+' zł</strong> (';
		if (roomnum==1)
			plabel+=roomnum+' pokój';
		else if (roomnum==2||roomnum==3||roomnum==4)
			plabel+=roomnum+' pokoje';
		else
			plabel+=roomnum+' pokoi';
		
		plabel+=' x '+(price+'').replace('.',',')+' zł/pokój/dobę x '+days+' rozpoczęte doby';
		if (needtransport && transprice!=0) plabel+=' + '+transprice+' zł za transport.';
		else if (needtransport) plabel+=' + darmowy trasport.';
	}
	if (plabel) {
		plabel1+=plabel;
		plabel1+=')';
	}
	document.getElementById('paymentlabel').innerHTML=plabel1;
	document.reservation.paymentinfo.value=plabel;
	document.reservation.days.value=days;
	document.reservation.payment.value=payment;

}

function updatePictures() {
	var hotelid = document.getElementById('hotel').options[document.getElementById('hotel').selectedIndex].value;

	if (document.getElementById('obrazki-'+hotelid)) {
		var pics = document.getElementById('obrazki-'+hotelid).innerHTML;
		pics=pics.replace(/rel=""/g,'rel="lightbox['+hotelid+']"');
		document.getElementById('hotelpictures').innerHTML = '';
		document.getElementById('hotelpictures').innerHTML = pics;
	}
}

function updateRoom() {	

	var roomid = document.getElementById('roomid').options[document.getElementById('roomid').selectedIndex].value;
	
	removeAllOptions(document.reservation.rooms);
	for (i=1; i<=roomoptions[roomvalues[0]][1]; i++){
		addOption(document.reservation.rooms, i, i);
	}
}

function updatePriceTable(){
	var roomid = document.getElementById('roomid').options[document.getElementById('roomid').selectedIndex].value;
	if (roomoptions[roomid][3]){
		document.getElementById('roomdescription').innerHTML = roomoptions[roomid][3];
		document.getElementById('roomdsc').style.display = 'block';
	} else 
		document.getElementById('roomdsc').style.display = 'none';
	
	var str='';
	
	for (i=0; i<roomprices[roomid].length; i++){
		
		if (parseInt(roomprices[roomid][i][0])>7){
			str+='<tr><td>Od: ';
			var strtm = new Date();
			var tm= parseInt(roomprices[roomid][i][0]);
			strtm.setTime(tm*1000);

			str += strtm.getFullYear()+'-';
			if (((strtm.getMonth()+1)+'').length==1) 
				str+='0'+(strtm.getMonth()+1);
			else
				str+=strtm.getMonth()+1;
			
			str+='-';
			
			if ((strtm.getDate()+'').length==1) 
				str+='0'+strtm.getDate();
			else
				str+=strtm.getDate();
				
			str+=' - Do: ';
			
			var strtm=null;
			var strtm = new Date();
			var tm= parseInt(roomprices[roomid][i][1]);
			
			strtm.setTime(tm*1000);
			
			str += strtm.getFullYear()+'-';
			if (((strtm.getMonth()+1)+'').length==1) 
				str+='0'+(strtm.getMonth()+1);
			else
				str+=strtm.getMonth()+1;
			
			str+='-';
			if ((strtm.getDate()+'').length==1) 
				str+='0'+strtm.getDate();
			else
				str+=strtm.getDate();
			str+='</td>';
			
			str+='<td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
		} else if (roomprices[roomid][i][0]) {
			if (parseInt(roomprices[roomid][i][0])==1)
				str+='<tr><td>Poniedziałek</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
			else if (parseInt(roomprices[roomid][i][0])==2)
				str+='<tr><td>Wtorek</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
			else if (parseInt(roomprices[roomid][i][0])==3)
				str+='<tr><td>Środa</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
			else if (parseInt(roomprices[roomid][i][0])==4)
				str+='<tr><td>Czwartek</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
			else if (parseInt(roomprices[roomid][i][0])==5)
				str+='<tr><td>Piątek</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
			else if (parseInt(roomprices[roomid][i][0])==6)
				str+='<tr><td>Sobota</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
			else if (parseInt(roomprices[roomid][i][0])==7)
				str+='<tr><td>Niedziela</td><td>'+roomprices[roomid][i][2].replace('.',',')+' zł</td></tr>';
		} 
	}
	if (str!='') {	
		str='<h2>Cennik '+roomoptions[roomid][0]+'</h2><table style="border: 1px solid #fff; padding: 5px;"><tr><th>Okres</th><th>Cena</th></tr>'+str;
		str+='<tr><td>Pozostały czas</td><td>'+roomoptions[roomid][2].replace('.',',')+' zł</td></tr></table>';
	} else {
		str='<h2>Cennik '+roomoptions[roomid][0]+'</h2><table style="border: 1px solid #fff; padding: 5px;"><tr><th>Okres</th><th>Cena</th></tr>';
		str+='<tr><td>Cały czas</td><td>'+roomoptions[roomid][2].replace('.',',')+' zł</td></tr></table>';
	}
	document.getElementById('pricetable').innerHTML = str;
}

function updateTransferHours() {
	
	document.reservation.data_transfer_go.value=document.reservation.data_go.value;
	document.reservation.data_transfer_ret.value=document.reservation.data_ret.value;
	
	var transtime = document.reservation.hour_go.options[document.reservation.hour_go.selectedIndex].value;
	var sbox=document.reservation.hour_transfer_go.options;
	
	for (i=0; i<sbox.length; i++){
		if (sbox[i].value==transtime)
		sbox.selectedIndex=i;
	}
	
	var transtime = document.reservation.hour_go.options[document.reservation.hour_ret.selectedIndex].value;
	var sbox=document.reservation.hour_transfer_ret.options;
	for (i=0; i<sbox.length; i++){
		if (sbox[i].value==transtime)
		sbox.selectedIndex=i;
	}
	
}


function setHotel(id) {
	var sbox=document.reservation.hotel.options;	
	for (i=0; i<sbox.length; i++){
		if (sbox[i].value==id)
		sbox.selectedIndex=i;
	}
	updatePictures();
	ajaxFunction();
}

function removeAllOptions(selectbox)
{
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		selectbox.remove(i);
	}
}


function addOption(selectbox, value, text )
{
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;

	selectbox.options.add(optn);
}

function round_number(n, d) {
  n = n - 0;
  if (d == null) d = 2;
  var f = Math.pow(10, d);
  n += Math.pow(10, - (d + 1));
  n = Math.round(n * f) / f;
  n += Math.pow(10, - (d + 1));
  n += '';
  return d == 0 ? n.substring(0, n.indexOf('.')) :  n.substring(0, n.indexOf('.') + d + 1);
}

