var parts=new Array();
var routevalues=new Array();
var pricelist=new Array();
var address='';
var paymentdone=0;

function ajaxFunction(pay){
	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.persons);
			removeAllOptions(document.reservation.cartype);
			
			parts = response.split('|'); 
			routevalues = parts[0].split(';');
			
			var type=document.getElementById('transfertype').value;

			//0 - doortodoor
			if (routevalues[0]=='no') {
				if (document.getElementById('routefrom').value != routevalues[6]) {
					if (type.substr(0,1)=='0') {
						document.getElementById('address_start_label').innerHTML=parts[1];
						document.getElementById('address_start').value=parts[1];
					}
					
					if (type.substr(1,1)=='0') {
						document.getElementById('address_end_label').innerHTML=parts[1];
						document.getElementById('address_end').value=parts[1];
					}
				} else {
					if (type.substr(0,1)=='0') {
						document.getElementById('address_start_label').innerHTML=parts[1];
						document.getElementById('address_start').value=parts[1];
					}
					
					if (type.substr(1,1)=='0') {
						document.getElementById('address_end_label').innerHTML=parts[1];
						document.getElementById('address_end').value=parts[1];
					}
				}	
				document.getElementById('address_start_div').style.display='none';
				document.getElementById('address_end_div').style.display='none';
				document.getElementById('address_start_ldiv').style.display='block';
				document.getElementById('address_end_ldiv').style.display='block';
			} else {
				if (document.getElementById('routefrom').value != routevalues[6]) {
					if (type.substr(0,1)=='0') {
						document.getElementById('address_start').innerText='';
						document.getElementById('address_start_div').style.display='block';
						document.getElementById('address_start_ldiv').style.display='none';
					}
					
					if (type.substr(1,1)=='0') {
						document.getElementById('address_end').innerText='';
						document.getElementById('address_end_div').style.display='block';
						document.getElementById('address_end_ldiv').style.display='block';
					}
				} else {
					if (type.substr(0,1)=='0') {
						document.getElementById('address_start').innerText='';
						document.getElementById('address_start_div').style.display='block';
						document.getElementById('address_start_ldiv').style.display='none';
					}
					
					if (type.substr(1,1)=='0') {
						document.getElementById('address_end').innerText='';
						document.getElementById('address_end_div').style.display='block';
						document.getElementById('address_end_ldiv').style.display='block';
					}
				}
			}
			
			
			//1 - cartype
			if (routevalues[1].substr(0,1)=='1') { addOption(document.reservation.cartype, 1, 'Samochód osobowy / Van'); }
			if (routevalues[1].substr(1,1)=='1') { addOption(document.reservation.cartype, 2, 'Mikrobus'); }
			if (routevalues[1].substr(2,1)=='1') { addOption(document.reservation.cartype, 3, 'Autobus');}
			if (routevalues[1].substr(3,1)=='1') { 
				addOption(document.reservation.cartype, 4, 'Samochód dostawczy');
				document.getElementById('personslabel').innerHTML = 'Liczba osób / paczek:';
			} else {
				document.getElementById('personslabel').innerHTML = 'Liczba osób:';
			}
			
			
			//3 - max persons
			var max=parseInt(routevalues[3]);
			for (i=1;i<=max;i++) {
				addOption(document.reservation.persons, i, i);
			}
		
		
			//2 - fullcaronly
			//4 - persondepend
			var returnString = '<table style="border: 1px solid #fff; padding: 5px;"><tr><th>Liczba osób</th><th>W jedną stronę</th><th>W dwie strony</th></tr>';
			if (routevalues[4]=='yes' && routevalues[2]=='no'){
				for (i=2; i<parts.length; i++){
					var tmp=parts[i].split(';');
					returnString += '<tr><td>'+tmp[0]+'</td><td>'+tmp[1]+'</td><td>';
					if (tmp[2]) returnString += tmp[2]+'</td></tr>';
					else returnString += '-</td></tr>';
					
					var j= i-2;
					pricelist[j]=new Array();
					
					pricelist[j][0]=tmp[0];
					pricelist[j][1]=tmp[1];
					pricelist[j][2]=tmp[2];
				}
			} else {
				var tmp=parts[2].split(';');
				if (routevalues[2]=='no') {
					returnString += '<tr><td>Za każdą osobę</td><td>'+tmp[1]+' zł</td><td>';
					document.getElementById('pricetype').innerHTML = 'Cena za osobę:';
				} else {
					returnString += '<tr><td>Za cały samochód</td><td>'+tmp[1]+' zł</td><td>';
					document.getElementById('pricetype').innerHTML = 'Cena za cały samochód:';
				}
				if (tmp[2]) returnString += tmp[2]+' zł</td></tr>';
				else returnString += '-</td></tr>';
				pricelist[0]=new Array();
				pricelist[0][0]=tmp[0];
				pricelist[0][1]=tmp[1];
				pricelist[0][2]=tmp[2];
			}
			returnString += '</table>';
			document.getElementById('pricetable').innerHTML = returnString;
			
			//5 - traveltime
			document.reservation.traveltime.value = routevalues[5];
			if (routevalues[5]!='0.00'){	
				document.getElementById('traveltimediv').style.display='block';
				document.getElementById('traveltimelabel').innerHTML = routevalues[5];
			} else {
				document.getElementById('traveltimediv').style.display='none';
			}
			
			//7-needflightinfo 
			document.getElementById('needflightinfo').value=routevalues[7];
			if (routevalues[7]=='yes'){
				document.getElementById('flightinfo').style.display='block';
			} else 
				document.getElementById('flightinfo').style.display='none';
		}
		updatePayment();
		ajaxUpdateTransferInfo();
	}
	
	ajaxRequest.open('GET', '/prices/'+document.getElementById('route').value, true);
	ajaxRequest.send(null); 
	
}


function updatePayment() {	
	
	paymentdone=1;
	var travelers = parseInt(document.reservation.persons.value);
		
	if (document.reservation.twoway.checked) {
		var way = 2;
		document.getElementById('returndiv').style.display = 'block';
	} else {
		var way = 1;
		document.getElementById('returndiv').style.display = 'none';
	}
	
	var t2=travelers-1;

	if (routevalues[4]=='yes' && routevalues[2]=='no'){
		var returnString = '<table style="border: 1px solid #fff; padding: 5px;"><tr><th>Liczba osób</th><th>W jedną stronę</th><th>W dwie strony</th></tr>';
		
		var mval = pricelist.length-1;
		if (travelers>pricelist.length) {
			var price = pricelist[mval][way];
		} else {
			var price = pricelist[t2][way];
		}

		for (i=0; i<pricelist.length; i++) {
					if (i==t2 || (travelers>10 && i==9)) {
						returnString += '<tr><td><strong>'+pricelist[i][0]+'</strong></td><td><strong>'+pricelist[i][1]+'</strong></td><td><strong>';
						if (pricelist[i][2]) returnString += pricelist[i][2]+'</strong></td></tr>';
						else returnString += '-</strong></td></tr>';
					} else {
						returnString += '<tr><td>'+pricelist[i][0]+'</td><td>'+pricelist[i][1]+'</td><td>';
						if (pricelist[i][2]) returnString += pricelist[i][2]+'</td></tr>';
						else returnString += '-</td></tr>';
					}
					var j=i;
		}

		if (j<routevalues[3]-1) {
					if ((j==t2 && j>=pricelist.length) || (t2>j)){
						returnString += '<tr><td><strong>Powyżej '+pricelist[j][0]+'</strong></td><td><strong>'+pricelist[j][1]+'</strong></td><td><strong>';
						if (pricelist[j][2]) returnString += pricelist[j][2]+'</strong></td></tr>';
						else returnString += '-</strong></td></tr>';
					} else {
						returnString += '<tr><td>Powyżej '+pricelist[j][0]+'</td><td>'+pricelist[j][1]+'</td><td>';
						if (pricelist[j][2]) returnString += pricelist[j][2]+'</td></tr>';
						else returnString += '-</td></tr>';
					}
		}
		
		returnString += '</table>';
		document.getElementById('pricetable').innerHTML = '';
		document.getElementById('pricetable').innerHTML = returnString;
		
		
	} else {
		var price = pricelist[0][way];
		//alert('price: '+price);
	}

	
	var cena = parseFloat(price.replace(',','.'));
	document.reservation.price.value = cena;
	document.getElementById('pricelabel').innerHTML= price+' zł';
	
	if (routevalues[2]=='no')
		var payment=travelers*cena;
	else
		var payment=cena;
		
	payment+='';
	document.reservation.payment.value = payment;
	
	
	var dozaplaty = payment.replace('.',',')+' zł ('+travelers;
	var travelerstr=travelers+'';
	var len=parseInt(travelerstr.length);
	
	if (travelerstr=='1')
		dozaplaty+=' osoba x ';
	else if ((travelerstr.substr(len-1,1)=='2' || travelerstr.substr(len-1,1)=='3' || travelerstr.substr(len-1,1)=='4') && travelerstr.substr(len-2,1)!='1')
		dozaplaty+=' osoby x ';
	else
		dozaplaty+=' osób x ';
		
	if (routevalues[2]=='yes') {
		var prc=parseFloat(price.replace(',','.'));
		var pricetmp=round_number(prc/travelers, 2);
	} else 
		var pricetmp=price;
		
	dozaplaty+=pricetmp.replace('.',',')+' zł = '+payment.replace('.',',')+' zł)';
		
	document.getElementById('paymentlabel').innerHTML = dozaplaty;

}


function updateFlighInfo() {
	document.reservation.lot_start.value=document.reservation.data_go.value;
	document.reservation.lot_end.value=document.reservation.data_ret.value;
}

function ajaxUpdateTransferInfo(){
	var ajaxRequest1;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest1 = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest1 = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest1 = 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
	ajaxRequest1.onreadystatechange = function() {
		if(ajaxRequest1.readyState == 4){
			
			var response = ajaxRequest1.responseText;
			
			document.getElementById('partnerinfo').innerHTML='';
			document.getElementById('partnerpictures').innerHTML='';
			
			parts = response.split('|||||'); 
			
			document.getElementById('partnerinfo').innerHTML=parts[0];
			document.getElementById('partnerpictures').innerHTML=parts[1];
		}
	}
	
	ajaxRequest1.open('GET', '/partnerinfo/'+document.getElementById('route').value, true);
	ajaxRequest1.send(null); 
}




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);
}
