function drawSeat(direction, name, number) {
	if (direction == departure) {
		return '<td nowrap="nowrap" align="center" onmouseover="if (this.className == \'free\' || this.className == \'reservedByMe\') {this.style.cursor=\'pointer\'; if (this.className == \'free\') {this.className=\'hover\';}} else {this.style.cursor=\'not-allowed\';} showSeatTooltip(event,this);" onmouseout="if (this.className == \'hover\') {this.style.cursor=\'default\';this.className=\'free\';}hideSeatTooltip();" onclick="if (this.style.cursor == \'pointer\') {if (checkForSelect(' + direction + ',this)) {selectSeat(' + direction + ', ' + number + ');}} else return false;" id="' + name + number + '" class="free"></td>';										
	} else {
		return '<td nowrap="nowrap" align="center" onmouseover="if (isNormalAlphaName(\'returnSeatsTooltipContainer\')) { if (this.className == \'free\' || this.className == \'reservedByMe\') {this.style.cursor=\'pointer\'; if (this.className == \'free\') {this.className=\'hover\';}} else {this.style.cursor=\'not-allowed\';} showSeatTooltip(event,this);} else {this.style.cursor=\'not-allowed\';}" onmouseout="if (isNormalAlphaName(\'returnSeatsTooltipContainer\')) {if (this.className == \'hover\') {this.style.cursor=\'default\';this.className=\'free\';}hideSeatTooltip();} else {this.style.cursor=\'not-allowed\';}" onclick="if (isNormalAlphaName(\'returnSeatsTooltipContainer\')) { if (this.style.cursor == \'pointer\') {if (checkForSelect(' + direction + ',this)) {selectSeat(' + direction + ', ' + number + ');}} else return false;}" id="' + name + number + '" class="free"></td>';										
	}	
};

function drawBlockedSeat(direction, name, number) {
	if (direction == departure) {
		return '<td nowrap="nowrap" align="center" onmouseover="this.style.cursor=\'not-allowed\'; showSeatTooltip(event,this);" onmouseout="hideSeatTooltip();" id="' + name + number + '" class="sold"></td>';										
	} else {
		return '<td nowrap="nowrap" align="center" onmouseover="this.style.cursor=\'not-allowed\'; showSeatTooltip(event,this);" onmouseout="if (isNormalAlphaName(\'returnSeatsTooltipContainer\')) {hideSeatTooltip();} else {this.style.cursor=\'not-allowed\';}" id="' + name + number + '" class="sold"></td>';										
	}	
};
function getSeats(direction, str) {
	var content = new StringBuffer();
	var name = "seat_";
	if (direction == arrive) {
		name = "_seat";
	}
	var tmpArr = str.split(",");
	if (tmpArr.length == 4) {
// block some seats
		if (blockSeats && str.indexOf("1,2,3,4") == 0) {
			content.append('<tr>');
			content.append('<td height="26" width="35"><img src="images/empty.gif" border="0" width="35" height="26"></td>');
			if (tmpArr[0] != undefined && tmpArr[0].length > 0) {
				content.append(drawBlockedSeat(direction, name, tmpArr[0]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}	
			content.append('<td width="7"><img src="images/empty.gif" border="0" width="7" height="26"></td>');
			if (tmpArr[1] != undefined && tmpArr[1].length > 0) {
				content.append(drawBlockedSeat(direction, name, tmpArr[1]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}			
			content.append('<td><img src="images/empty.gif" border="0" width="31" height="26"></td>');
			if (tmpArr[2] != undefined && tmpArr[2].length > 0) {
				content.append(drawBlockedSeat(direction, name, tmpArr[2]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}	
			content.append('<td width="7"><img src="images/empty.gif" border="0" width="7" height="26"></td>');
			if (tmpArr[3] != undefined && tmpArr[3].length > 0) {
				content.append(drawBlockedSeat(direction, name, tmpArr[3]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}	
			content.append('<td width="36"><img src="images/empty.gif" border="0" width="36" height="26"></td>');		
			content.append('</tr>');	
		} else {
// go normal		
			content.append('<tr>');
			content.append('<td height="26" width="35"><img src="images/empty.gif" border="0" width="35" height="26"></td>');
			if (tmpArr[0] != undefined && tmpArr[0].length > 0) {
				content.append(drawSeat(direction, name, tmpArr[0]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}	
			content.append('<td width="7"><img src="images/empty.gif" border="0" width="7" height="26"></td>');
			if (tmpArr[1] != undefined && tmpArr[1].length > 0) {
				content.append(drawSeat(direction, name, tmpArr[1]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}			
			content.append('<td><img src="images/empty.gif" border="0" width="31" height="26"></td>');
			if (tmpArr[2] != undefined && tmpArr[2].length > 0) {
				content.append(drawSeat(direction, name, tmpArr[2]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}	
			content.append('<td width="7"><img src="images/empty.gif" border="0" width="7" height="26"></td>');
			if (tmpArr[3] != undefined && tmpArr[3].length > 0) {
				content.append(drawSeat(direction, name, tmpArr[3]));
			} else {
				content.append('<td nowrap="nowrap" width="19"></td>');	
			}	
			content.append('<td width="36"><img src="images/empty.gif" border="0" width="36" height="26"></td>');		
			content.append('</tr>');	
		}
	} else if (tmpArr.length == 5) {
		content.append('<tr>');
		content.append('<td height="19" width="35"><img src="images/empty.gif" border="0" width="35" height="19"></td>');
		if (tmpArr[0] != undefined && tmpArr[0].length > 0) {
			content.append(drawSeat(direction, name, tmpArr[0]));
		} else {
			content.append('<td nowrap="nowrap" width="19"></td>');
		}	
		content.append('<td width="7"><img src="images/empty.gif" border="0" width="7" height="19"></td>');	
		if (tmpArr[1] != undefined && tmpArr[1].length > 0) {
			content.append(drawSeat(direction, name, tmpArr[1]));
		} else {
			content.append('<td nowrap="nowrap" width="19"></td>');
		}	
		content.append('<td width="31" height="19">');
		content.append('<table cellpadding="0" cellspacing="0" width="31">');
		content.append('<tr>');
		content.append('<td width="6"><img src="images/empty.gif" border="0" width="4" height="19"></td>');
		if (tmpArr[2] != undefined && tmpArr[2].length > 0) {
			content.append(drawSeat(direction, name, tmpArr[2]));
		} else {
			content.append('<td nowrap="nowrap" width="19"></td>');
		}	
		content.append('<td width="6"><img src="images/empty.gif" border="0" width="4" height="19"></td>');
		content.append('</tr>');
		content.append('</table>');
		content.append('</td>');	
		if (tmpArr[3] != undefined && tmpArr[3].length > 0) {
			content.append(drawSeat(direction, name, tmpArr[3]));
		} else {
			content.append('<td nowrap="nowrap" width="19"></td>');
		}	
		content.append('<td width="7"><img src="images/empty.gif" border="0" width="7" height="19"></td>');
		if (tmpArr[4] != undefined && tmpArr[4].length > 0) {
			content.append(drawSeat(direction, name, tmpArr[4]));
		} else {
			content.append('<td nowrap="nowrap" width="19"></td>');
		}	
		content.append('<td width="36"><img src="images/empty.gif" border="0" width="36" height="19"></td>');		
		content.append('</tr>');	
		content.append('<tr>');	
		content.append('<td height="27" width="100%" colspan="9"><img src="images/empty.gif" border="0" width="100%" height="27"></td>');																																																												
		content.append('</tr>');	
	}
	return content.toString();
};
function getDesignSeats(direction, count) {
	var content = new StringBuffer();
	content.append('<table cellpadding="0" cellspacing="0" width="192" height="340" border="0">');
	content.append('<tr>');
	content.append('<td height="30" width="100%" colspan="9"><img src="images/empty.gif" border="0" width="100%" height="30"></td>');																				
	content.append('</tr>');		
	content.append(getSeats(direction, "1,2,3,4"));	
    content.append(getSeats(direction, "5,6,7,8"));
    content.append(getSeats(direction, "9,10,11,12"));
    content.append(getSeats(direction, "13,14,15,16"));
    content.append(getSeats(direction, "17,18,19,20"));
	if (count == 51) { 			                
	    content.append(getSeats(direction, "21,22,51,50"));
		
	} else if (count == 50) {
	    content.append(getSeats(direction, "21,22,51,"));
		
	} else {
	    content.append(getSeats(direction, "21,22,,"));
	}
    content.append(getSeats(direction, "23,24,,"));
    content.append(getSeats(direction, "28,27,26,25"));
    content.append(getSeats(direction, "32,31,30,29"));
    content.append(getSeats(direction, "36,35,34,33"));
    content.append(getSeats(direction, "40,39,38,37"));
    content.append(getSeats(direction, "44,43,42,41"));
	if (count >= 49) {			                
	    content.append(getSeats(direction, "49,48,47,46,45"));
	} else {
		switch(count) {
			case 48: {
				 content.append(getSeats(direction, ",48,47,46,45"));
				 break;
			}
			case 47: {
				 content.append(getSeats(direction, ",,47,46,45"));
				 break;				
			}
			case 46: {
				 content.append(getSeats(direction, ",,,46,45"));
				 break;				
			}
			case 45: {
				 content.append(getSeats(direction, ",,,,45"));
				 break;				
			}			
		}	
	}	   
    content.append('</table>');
	return content.toString();
}; 
function setSeatStatus(number, status) {
	if (blockSeats && (number == 1 || number == 2 || number == 3 || number == 4)) {
		return;
	}
	document.getElementById('seat_' + number).className = status;	
};
function setReturnSeatStatus(number, status) {
	if (blockSeats && (number == 1 || number == 2 || number == 3 || number == 4)) {
		return;
	}
	document.getElementById('_seat' + number).className = status;
};
function loadSeats(loadTickets) { 	   	        		
	initSeatsAjaxLoader('seatsTooltip');
	getSeatData(loadTickets);	
};
function loadReturnSeats() { 	   	        		
	initReturnSeatsAjaxLoader('returnSeatsTooltip');
	getReturnSeatData();	
}; 

function initSeatsAjaxLoader(element) {
	var el = document.getElementById(element);
	var content = new StringBuffer();
	
	if (el != undefined) {	
		content.append('<table cellpadding="0" cellspacing="0" width="192" height="340" border="0">');
		content.append('<tr valign="bottom">');
		content.append('<td width="100%" height="49%" align="center"><img src="images/ajax-loader.gif" width="32" height="32" border="0"></td>');
		content.append('</tr>');
		content.append('<tr>');
		content.append('<td width="100%" height="2%" align="center"></td>');
		content.append('</tr>');
		content.append('<tr valign="top">');
		content.append('<td width="100%" height="49%" align="center" id="seats_loading_msg" class="filters" nowrap="nowrap">Зареждане на местата...</td>');
		content.append('</tr>');
		content.append('</table>');
		el.innerHTML = content.toString();
	}
};
function initReturnSeatsAjaxLoader(element) {
	var el = document.getElementById(element);
	var content = new StringBuffer();
	
	if (el != undefined) {	
		content.append('<table cellpadding="0" cellspacing="0" width="192" height="340" border="0">');
		content.append('<tr valign="bottom">');
		content.append('<td width="100%" height="49%" align="center"><img src="images/ajax-loader.gif" width="32" height="32" border="0"></td>');
		content.append('</tr>');
		content.append('<tr>');
		content.append('<td width="100%" height="2%" align="center"></td>');
		content.append('</tr>');
		content.append('<tr valign="top">');
		content.append('<td width="100%" height="49%" align="center" id="returnSeats_loading_msg" class="filters" nowrap="nowrap">Зареждане на местата...</td>');
		content.append('</tr>');
		content.append('</table>');
		el.innerHTML = content.toString();
	}
}; 
function hideSeatsTooltip() {
	if (showVehicleSeats)
		document.getElementById('seatsTooltip').innerHTML = "<table width=100%><tr><td class='filters' align='center'>Не е избран маршрут...</td></tr></table>";
	showVehicleSeats = false;	
};	
function hideReturnSeatsTooltip() {
	if (showVehicleReturnSeats)
		document.getElementById('returnSeatsTooltip').innerHTML = "<table width=100%><tr><td class='filters' align='center'></td></tr></table>";
	showVehicleReturnSeats = false;	
};
function showReturnVehicleAndSeats() {
	if (document.getElementById('returnSeatsTooltipContainer') != undefined) {  
		setNormalAlphaDefaultCursor(document.getElementById('returnSeatsTooltipContainer'));
		if (document.getElementById('returnSeatsTooltip').innerHTML.length < 150)
			document.getElementById('returnSeatsTooltip').innerHTML = "<table width=100%><tr><td class='filters' align='center'>Не е избран маршрут...</td></tr></table>";
	}
};
function hideReturnVehicleAndSeats() {
	if (document.getElementById('returnSeatsTooltipContainer') != undefined) { 
		setDisabledAlphaNotAllowedCursor(document.getElementById('returnSeatsTooltipContainer'));		
	}
};
function selectSeat(direction, seatId) {
	if (direction == departure) {		
		sendSeatData(seatId);
	} else if (direction == arrive) {
		sendReturnSeatData(seatId);
	}	
};

function getSeatData(loadTickets) {	
	var XMLHttpRequestObject = getXMLHttpRequestObject();
	var success = false;
	if (XMLHttpRequestObject) {  
        var url = encodeURI(contextRoot + 'seat-mgr?a=g&trId=1&sId=' + sessionId + '&sync=' + Math.random());    
		XMLHttpRequestObject.open("GET", url);
        XMLHttpRequestObject.onreadystatechange = function() {
		if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { 
			if (XMLHttpRequestObject.responseText == moduleClosedErrCode) {
				moduleCloseOperation();    						
			} else if (XMLHttpRequestObject.responseText == sessionTimeOut) {
				sessionTimeOutOperation();
                hideSeatsTooltip();                 
 			} else if (XMLHttpRequestObject.responseText == invalidParameters) {
//                alert('Некоректни параметри!');	  				
//                hideSeatsTooltip();
				invalidParametersOperation();
 			}  else if (XMLHttpRequestObject.responseText == '-6') {
                alert('Няма асоцииран автобус с избраният от вас маршрут!');	
                hideSeatsTooltip(); 
 			} else if (XMLHttpRequestObject.responseText == '-5') {
                alert('Грешка при извличане номера на местата на автобуса!');	
                hideSeatsTooltip();                                     
            } else {
            	var response = null;
            	if (_ie) XMLHttpRequestObject.responseXML.loadXML(XMLHttpRequestObject.responseText);	            		            		
            	response = XMLHttpRequestObject.responseXML.documentElement;
            	if (response != null) { 	            		      	 	            		        		            		
	            	var i = 0;
	            	var count = 0;
	            	try {
						count = parseInt(response.childNodes[0].firstChild.data, 10);
					} catch (e) {}
					document.getElementById('seatsTooltip').innerHTML = getDesignSeats(departure, count);
	           		numberOfLockedSeats = 0;
	           		if (response.childNodes[1] != undefined && response.childNodes[1].firstChild != undefined) {
	           			if (!isNaN(response.childNodes[1].firstChild.data)) {
	           				numberOfLockedSeats = parseFloat(response.childNodes[1].firstChild.data);
	           			}
	           		}    
	           		numberOfLockedReturnSeats = 0;
	           		if (response.childNodes[2] != undefined && response.childNodes[2].firstChild != undefined) {
	           			if (!isNaN(response.childNodes[2].firstChild.data)) {
	           				numberOfLockedReturnSeats = parseFloat(response.childNodes[2].firstChild.data);
	           			}
	           		}            			           		        		
	           		
            		while (i >= 0) {
            			if (i < 3){i++; continue;}	            			
            			var seats = response.childNodes[i];		            															            						          	            									            						          	            					            			
						if (seats != null) {													
							var number = seats.childNodes[0].firstChild.data;
							var status = seats.childNodes[1].firstChild.data;
							setSeatStatus(number, status);																							  							  							  						 				            
						  	i++;
						} else {
						  i = -1;
						}
		        	}			        					        	
				}
				success = true;
				showVehicleSeats = true;
            }
            killXML(XMLHttpRequestObject);
            if (success) {            
 				if (loadTickets) {
 					getTickets();				                 					     					
 				} else {
 					getTotalTicketsCountAndPrice();	           
 				}
            }
            switchVisibility('seatsTooltip', 'ajax_loader');			
		} else if (XMLHttpRequestObject.readyState != 0) {			
            showCustomTooltip('ajax_loader');                	                	                			
		} else {
			alert('Възникна грешка с извличането на XML данните!');		
		}
	};
	XMLHttpRequestObject.send(null);		
	}		
};
function getReturnSeatData() {
	var XMLHttpRequestObject = getXMLHttpRequestObject();
	var success = false;
	if (XMLHttpRequestObject) {        	           
        var url = encodeURI(contextRoot + 'seat-mgr?a=g&rTrId=1&sId=' + sessionId + '&sync=' + Math.random());
		XMLHttpRequestObject.open("GET", url);
        XMLHttpRequestObject.onreadystatechange = function() {
		if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { 
			if (XMLHttpRequestObject.responseText == moduleClosedErrCode) {
				moduleCloseOperation();    									
			} else if (XMLHttpRequestObject.responseText == invalidParameters) {
//                alert('Некоректни параметри!');	  
//                hideReturnSeatsTooltip();
				invalidParametersOperation();
 			} else if (XMLHttpRequestObject.responseText == '-6') {
                alert('Няма асоцииран автобус с избаният от вас маршрут');	
                hideReturnSeatsTooltip(); 
 			} else if (XMLHttpRequestObject.responseText == '-5') {
                alert('Грешка при извличане номера на местата на автобуса!');	
                hideReturnSeatsTooltip();                                     
            } else {
            	var response = null;
            	if (_ie) XMLHttpRequestObject.responseXML.loadXML(XMLHttpRequestObject.responseText);	            		            		
            	response = XMLHttpRequestObject.responseXML.documentElement;	            	          			            	
            	if (response != null) { 	            		      	 	            		        		            		
	            	var i = 0;	 
	            	var count = 0;
	            	try {
						count = parseInt(response.childNodes[0].firstChild.data, 10);
					} catch (e) {}
	           		document.getElementById('returnSeatsTooltip').innerHTML = getDesignSeats(arrive, count);	           		  		
	           		numberOfLockedSeats = 0;
	           		if (response.childNodes[1] != undefined && response.childNodes[1].firstChild != undefined) {
	           			if (!isNaN(response.childNodes[1].firstChild.data)) {
	           				numberOfLockedSeats = parseFloat(response.childNodes[1].firstChild.data);
	           			}
	           		}            		

	           		numberOfLockedReturnSeats = 0;
	           		if (response.childNodes[2] != undefined && response.childNodes[2].firstChild != undefined) {
	           			if (!isNaN(response.childNodes[2].firstChild.data)) {
	           				numberOfLockedReturnSeats = parseFloat(response.childNodes[2].firstChild.data);
	           			}
	           		}            		
	           		
            		while (i >= 0) {
            			if (i < 3){i++; continue;}	            			
            			var seats = response.childNodes[i];		            															            						          	            									            						          	            					            			
						if (seats != null) {													
							var number = seats.childNodes[0].firstChild.data;
							var status = seats.childNodes[1].firstChild.data;
							setReturnSeatStatus(number, status);																							  							  							  						 				            
						  	i++;
						} else {
						  i = -1;
						}
		        	}
		        showVehicleReturnSeats = true;				        					        	
				}				                 					     					
            }
            killXML(XMLHttpRequestObject);
            switchVisibility('returnSeatsTooltip', 'ajax_loader');			
		 	if (success) {
		 		getTotalTicketsCountAndPrice();	
		 	}
		} else if (XMLHttpRequestObject.readyState != 0) {			
            showCustomTooltip('ajax_loader');                	                	                			
		} else {
			alert('Възникна грешка с извличането на XML данните!');		
		}
	};
	XMLHttpRequestObject.send(null);
	}	
};

function sendSeatData(seat) {
	var XMLHttpRequestObject = getXMLHttpRequestObject();
	var success = false;
	var reloadData = false;
	var lockSeat = false;
	var oldSeatClassName =  document.getElementById('seat_' + seat).className;
	var initTimer = (numberOfLockedSeats == 0 && numberOfLockedReturnSeats == 0) ? true : false;
	if (XMLHttpRequestObject) {  
        var url = encodeURI(contextRoot + 'seat-mgr?a=s&trId=1&sId=' + sessionId + '&seat=' + seat + '&sync=' + Math.random()); 
		XMLHttpRequestObject.open("GET", url);
        XMLHttpRequestObject.onreadystatechange = function() {
        	if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {   
    			if (XMLHttpRequestObject.responseText == moduleClosedErrCode) {
    				moduleCloseOperation();    									
    			} else if (XMLHttpRequestObject.responseText == sessionTimeOut) {
    				sessionTimeOutOperation();                    	
 		        } else if (XMLHttpRequestObject.responseText == systemError) {
 		        	alert('Възникна грешка в системата!');                    	
	            } else if (XMLHttpRequestObject.responseText == invalidParameters) {
	                //alert('Некоректни параметри!');	  
	                invalidParametersOperation();
	            } else if (XMLHttpRequestObject.responseText == ticketNotSelected) {
	                alert('Моля изберете билет(и)!');	
	                reloadData = true; 
	            } else if (XMLHttpRequestObject.responseText == setCannotBeUnlock) {
	                alert('Мястото не може да бъде освободено, защото е асоциирано към друг маршрут! За да го освободите премахнете билета от кошницата към който е асоциирано мястото.');	
	                reloadData = true;                 
	            } else if (XMLHttpRequestObject.responseText == seatAlreadyLocked) {
					alert('Място ' + seat + ' вече е било избрано от друг!'); 
					reloadData = true;  
	            } else if (XMLHttpRequestObject.responseText == seatAlreadySold) {
					alert('Място ' + seat + ' вече е било продадено!'); 
					reloadData = true;      						
	            } else if (XMLHttpRequestObject.responseText == '-5') {
	                alert('Некоректен брой места в автобуса!');	                     	
	            } else if (XMLHttpRequestObject.responseText == '-6') {
	                alert('Не е намерен автобус!');	                     	
	            } else if (XMLHttpRequestObject.responseText == '-7') {
	                alert('Мястото е било асоциирано с друг тип билет!');	
	                document.getElementById('seat_' + seat).className = oldSeatClassName;                     	
	            } else if (XMLHttpRequestObject.responseText == invalidCommunicationParameter) {
	                alert('Некоректни комуникационни параметри!');	                     	
	            } else if (XMLHttpRequestObject.responseText == communicationError) {
	                alert('Възникна комуникационна грешка!');	                     			                                   	
	 			} else {
	            	var response = null;
	            	if (_ie) XMLHttpRequestObject.responseXML.loadXML(XMLHttpRequestObject.responseText);	            		            		
	            	response = XMLHttpRequestObject.responseXML.documentElement;	            	          			            	
	            	if (response != null) {
						if (response.childNodes[0] != undefined && response.childNodes[0].firstChild != undefined) {
							if (seatLockedByMe == response.childNodes[0].firstChild.data) {
								document.getElementById('seat_' + seat).className = 'reservedByMe';
								success = true; 
								lockSeat = true;
							} else if (seatFree == response.childNodes[0].firstChild.data) {
								document.getElementById('seat_' + seat).className = 'free';
								success = true; 								
							}
						}
						if (response.childNodes[1] != undefined && response.childNodes[1].firstChild != undefined) {
							try{
								if (!isNaN(parseFloat(response.childNodes[1].firstChild.data))) {
									numberOfLockedSeats = parseFloat(response.childNodes[1].firstChild.data);
								} else {
									numberOfLockedSeats = 0;	
								}
							}catch (e) {;}	
						}
						if (response.childNodes[2] != undefined && response.childNodes[2].firstChild != undefined) {
							try{
								if (!isNaN(parseFloat(response.childNodes[2].firstChild.data))) {
									numberOfLockedReturnSeats = parseFloat(response.childNodes[2].firstChild.data);
								} else {
									numberOfLockedReturnSeats = 0;	
								}
							}catch (e) {;}								
						}
						if (response.childNodes[3] != undefined && response.childNodes[3].firstChild != undefined) {
							try{
								if (!isNaN(parseFloat(response.childNodes[3].firstChild.data))) {
									ticketLeftDepartureCount = parseFloat(response.childNodes[3].firstChild.data);
									if (ticketLeftDepartureCount > 0)
										document.getElementById('ticketLeftDeparture').innerHTML = ticketLeftDepartureCount;
									else document.getElementById('ticketLeftDeparture').innerHTML = "OK";	
								} else {
									ticketLeftDepartureCount = 0;	
								}	
							}catch (e) {;}								
						}
						if (response.childNodes[4] != undefined && response.childNodes[4].firstChild != undefined) {								
							if (response.childNodes[4].firstChild.data == "true") { 										
								showSummaryBtn = true;
							} else {
								showSummaryBtn = false;																										
							}
						}
						if (response.childNodes[5] != undefined && response.childNodes[5].firstChild != undefined) {								
							if (!isNaN(parseFloat(response.childNodes[5].firstChild.data))) {
								if (parseFloat(response.childNodes[5].firstChild.data) == noCurrentTicketSelected) {
									setNormalAlphaCursorToAllTickets();
								} else {
									currentSelectTicketType = parseFloat(response.childNodes[5].firstChild.data);
									setDisabledAlphaCursorToAllTicketsExceptCurrentSelectTicketType();
								}
							}
						}
						if (seatFree == response.childNodes[0].firstChild.data) {								
							if (response.childNodes[6] != undefined && response.childNodes[6].firstChild != undefined) {									
								var _ticketTypeId = response.childNodes[6].firstChild.data; 
								if (_ticketTypeId != undefined) {
									if (ticketsTypeArr != null && ticketsTypeArr.length > 0) {
										for (var i = 0; i < ticketsTypeArr.length; i++) {
											if (document.getElementById(_ticketTypeId + '_' + i) != undefined) {
												var count = parseFloat(document.getElementById('count' + i).innerHTML);
												if (count > 0) {
													count--;
													document.getElementById('count' + i).innerHTML = count;
													if (count == 0) {
														setDisabledAlphaNotAllowedCursor(document.getElementById('ticketMinus' + i));
													}
												}
											}
										}
									}
								} 
								getTotalTicketsCountAndPrice();
							}								
						}
					}						
                }								    
			    killXML(XMLHttpRequestObject);
				if (success) {	
					if (showSummaryBtn) {
						showSummaryButton();
					} else {
						hideSummaryButton();		    	
					}
					if ((numberOfLockedSeats == 0 && numberOfLockedReturnSeats == 0) || initTimer) {
						if (lockSeat) {
							getInitStateTimerState();
						} else {
							getInitStateTimerStateShowAlert();
						}
					} else {
						if (!lockSeat) {
							alert('Отмаркирали сте място, преди да продължите, моля изберете друго място в автобуса или намалете избрания брой билет с един.');
						}							
					}
			    } else if (reloadData) {
			    	getSeatData(false);
				}
				managefilterAccordingSelectedTicketType();
			} else if (XMLHttpRequestObject.readyState != 0) {					                    
                document.getElementById('seat_' + seat).className = 'seat-loading';
            } else {
            	alert('Възникна проблем с извличането на XML данните!');
            }
		};
		XMLHttpRequestObject.send(null);
		}
};
function sendReturnSeatData(seat, trId, rTrId) {
	var XMLHttpRequestObject = getXMLHttpRequestObject();
	var success = false;
	var reloadData = false;
	var lockSeat = false;
	var initTimer = (numberOfLockedSeats == 0 && numberOfLockedReturnSeats == 0) ? true : false;
	if (XMLHttpRequestObject) {  
        var url = encodeURI(contextRoot + 'seat-mgr?a=s&rTrId=1&sId=' + sessionId + '&seat=' + seat + '&sync=' + Math.random());
		XMLHttpRequestObject.open("GET", url);
        XMLHttpRequestObject.onreadystatechange = function() {
            if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {   
    			if (XMLHttpRequestObject.responseText == moduleClosedErrCode) {
    				moduleCloseOperation();    									
    			} else if (XMLHttpRequestObject.responseText == sessionTimeOut) {
    				sessionTimeOutOperation();                   	
    	        }  else if (XMLHttpRequestObject.responseText == systemError) {
	               alert('Възникна грешка в системата!');                    	
	            } else if (XMLHttpRequestObject.responseText == invalidParameters) {
	                //alert('Некоректни параметри!');	
	                invalidParametersOperation();
	            } else if (XMLHttpRequestObject.responseText == ticketNotSelected) {
	                alert('Моля изберете билет(и)!');	
	                reloadData = true;  
	            } else if (XMLHttpRequestObject.responseText == setCannotBeUnlock) {
	                alert('Мястото не може да бъде освободено, защото е асоциирано към друг маршрут! За да го освободите премахнете билета от кошницата към който е асоциирано мястото.');	
	                reloadData = true;                 	                
	            } else if (XMLHttpRequestObject.responseText == seatAlreadyLocked) {
					alert('Място ' + seat + ' вече е било избрано от друг!'); 
					reloadData = true;  
	            } else if (XMLHttpRequestObject.responseText == seatAlreadySold) {
					alert('Място ' + seat + ' вече е било продадено!'); 
					reloadData = true;      											
	            } else if (XMLHttpRequestObject.responseText == '-5') {
	                alert('Некоректен брой места в автобуса!');	                     	
	            } else if (XMLHttpRequestObject.responseText == '-6') {
	                alert('Не е намерен автобус!');	                     	
	            } else if (XMLHttpRequestObject.responseText == '-7') {
	                alert('Мястото е било асоциирано с друг тип билет!');	                     	
	            } else if (XMLHttpRequestObject.responseText == '-8') {
	                alert('Некоректни комуникационни параметри!');	                     	
	            } else if (XMLHttpRequestObject.responseText == communicationError) {
	                alert('Възникна комуникационна грешка!');	                     			                                   	
	 			} else {
	            	var response = null;
	            	if (_ie) XMLHttpRequestObject.responseXML.loadXML(XMLHttpRequestObject.responseText);	            		            		
	            	response = XMLHttpRequestObject.responseXML.documentElement;	            	          			            	
	            	if (response != null) { 	
						if (response.childNodes[0] != undefined && response.childNodes[0].firstChild != undefined) {
							if (seatLockedByMe == response.childNodes[0].firstChild.data) {
								document.getElementById('_seat' + seat).className = 'reservedByMe';
								success = true;  
								lockSeat = true;
							} else if (seatFree == response.childNodes[0].firstChild.data) {
								document.getElementById('_seat' + seat).className = 'free'; 
								success = true; 	
							}
						}
						if (response.childNodes[1] != undefined && response.childNodes[1].firstChild != undefined) {
							try{
								if (!isNaN(parseFloat(response.childNodes[1].firstChild.data))) {
									numberOfLockedSeats = parseFloat(response.childNodes[1].firstChild.data);
								} else {
									numberOfLockedSeats = 0;	
								}
							}catch (e) {;}	
						}
						if (response.childNodes[2] != undefined && response.childNodes[2].firstChild != undefined) {
							try{
								if (!isNaN(parseFloat(response.childNodes[2].firstChild.data))) {
									numberOfLockedReturnSeats = parseFloat(response.childNodes[2].firstChild.data);
								} else {
									numberOfLockedReturnSeats = 0;	
								}
							}catch (e) {;}								
						}
						if (response.childNodes[3] != undefined && response.childNodes[3].firstChild != undefined) {
							try{
								if (!isNaN(parseFloat(response.childNodes[3].firstChild.data))) {
									ticketLeftReturnCount = parseFloat(response.childNodes[3].firstChild.data);
									if (ticketLeftReturnCount > 0) {
										document.getElementById('ticketLeftReturn').innerHTML = ticketLeftReturnCount;
									} else {
										document.getElementById('ticketLeftReturn').innerHTML = "OK";	
									}
								} else {
									ticketLeftReturnCount = 0;	
								}	
							}catch (e) {;}								
						}
						if (response.childNodes[4] != undefined && response.childNodes[4].firstChild != undefined) {
							if (response.childNodes[4].firstChild.data == "true") {										
								showSummaryBtn = true;
							} else {
								showSummaryBtn = false;																										
							}
						}
						if (response.childNodes[5] != undefined && response.childNodes[5].firstChild != undefined) {								
							if (!isNaN(parseFloat(response.childNodes[5].firstChild.data))) {
								if (parseFloat(response.childNodes[5].firstChild.data) == noCurrentTicketSelected) {
									setNormalAlphaCursorToAllTickets();
								} else {
									currentSelectTicketType = parseFloat(response.childNodes[5].firstChild.data);
									setDisabledAlphaCursorToAllTicketsExceptCurrentSelectTicketType();
								}
							}
						}
						if (seatFree == response.childNodes[0].firstChild.data) {								
							if (response.childNodes[6] != undefined && response.childNodes[6].firstChild != undefined) {									
								var _ticketTypeId = response.childNodes[6].firstChild.data; 
								if (_ticketTypeId != undefined) {
									if (ticketsTypeArr != null && ticketsTypeArr.length > 0) {
										for (var i = 0; i < ticketsTypeArr.length; i++) {
											if (document.getElementById(_ticketTypeId + '_' + i) != undefined) {
												var count = parseFloat(document.getElementById('count' + i).innerHTML);
												if (count > 0) {
													count--;
													document.getElementById('count' + i).innerHTML = count;
												}
											}
										}
									}
								} 
								getTotalTicketsCountAndPrice();
							}								
						}						
					}
					success = true;
                }								    
			    killXML(XMLHttpRequestObject);
				if (success) {	
					if (showSummaryBtn) {
						showSummaryButton();
					} else {
						hideSummaryButton();		    	
					}
					if ((numberOfLockedSeats == 0 && numberOfLockedReturnSeats == 0) || initTimer) {
						if (lockSeat) {
							getInitStateTimerState();
						} else {
							getInitStateTimerStateShowAlert();
						}
					} else {
						if (!lockSeat) {
							alert('Отмаркирали сте място, преди да продължите, моля изберете друго място в автобуса или намалете избрания брой билет с един.');
						}							
					}
										
			    } else if (reloadData) {
					getReturnSeatData();							
				} 	 
				managefilterAccordingSelectedTicketType();
			} else if (XMLHttpRequestObject.readyState != 0) {					                    
                document.getElementById('_seat' + seat).className = 'seat-loading';
            } else {
            	alert('Възникна проблем с извличането на XML данните!');
            }
		};
		XMLHttpRequestObject.send(null);
		}
};
function getCurrentSelectTicketTypeDirection(){
	if (noCurrentTicketSelected != currentSelectTicketType) {
		if (currentSelectTicketType == ticketTypeOneWay || currentSelectTicketType == ticketTypeTwoWay) {
			return currentSelectTicketType;
		} else {			
			if (ticketsTypeIdArr != null && ticketsTypeIdArr.length > 0) {
				for (var i = 0; i < ticketsTypeIdArr.length; i++) {	
					if (ticketsTypeIdArr[i] == currentSelectTicketType) {
						if (ticketsDirectionArr[i] == ticketTypeOneWay) {
							return ticketTypeOneWay;
						} else {
							return ticketTypeTwoWay;
						}
					}								
				}				
			}
		}
	}
	return noCurrentTicketSelected;	
};
function checkForSelect(direction, element) {
	if (userLogged) {	
		if (currentSelectOneWayTicketsCount > 0) {
			if (element != undefined) {
				if (direction == departure) {
					//alert("numberOfLockedSeats = " + numberOfLockedSeats + ", currentSelectOneWayTicketsCount=" + currentSelectOneWayTicketsCount);
					if (numberOfLockedSeats <= currentSelectOneWayTicketsCount) {
						if (element.className != "reservedByMe") {
							if (numberOfLockedSeats < currentSelectOneWayTicketsCount) {
								return true;
							} else {								
								if (noCurrentTicketSelected != currentSelectTicketType) {
									if (getCurrentSelectTicketTypeDirection() == ticketTypeTwoWay) {
										alert("Моля избрете място за връщане!");
									}
								} else {
									alert("Моля избeрете билет(и)!");
								}
							}	
						} else {
							if (currentSelectTicketType == noCurrentTicketSelected) {
								return true;
							} else {
								if (noCurrentTicketSelected != currentSelectTicketType && getCurrentSelectTicketTypeDirection() == ticketTypeTwoWay) {
									if (numberOfLockedSeats == currentSelectOneWayTicketsCount) {	
										alert("Моля избрете място за връщане!");
									} else {
										alert("Мястото, което сте избрали не е свободно!");
									}
								} else {
									alert("Мястото, което сте избрали не е свободно!");
								}
							}
						}
					}
				} else {	
					if (element.className == "reservedByMe") {
						if (currentSelectTicketType == noCurrentTicketSelected) {
							return true;
						} else {
							if (noCurrentTicketSelected != currentSelectTicketType) {
								if (getCurrentSelectTicketTypeDirection() != ticketTypeTwoWay) {
									alert("Избраният тип билет не е двупосочен!");
								} else {
									if (numberOfLockedReturnSeats == currentSelectTwoWayTicketsCount) {	
										alert("Моля избрете място за тръгване!");
									} else {
										alert("Мястото, което сте избрали не е свободно!");
									}
								}
							} else {
								alert("Мястото, което сте избрали не е свободно!");
							}
						}
					} else {
						//alert("currentSelectTwoWayTicketsCount = " + currentSelectTwoWayTicketsCount + " , numberOfLockedReturnSeats = " + numberOfLockedReturnSeats + " ," + getCurrentSelectTicketTypeDirection());
						if (noCurrentTicketSelected == currentSelectTicketType) {
							alert("Моля избeрете билет(и)!");
						} else if (getCurrentSelectTicketTypeDirection() != ticketTypeTwoWay) {
							alert("Избраният тип билет не е двупосочен!");
						} else {						 
							 if (currentSelectTwoWayTicketsCount > 0) {
								 if (numberOfLockedReturnSeats <= currentSelectTwoWayTicketsCount) {									
									if (numberOfLockedReturnSeats < currentSelectTwoWayTicketsCount) {
										return true;
									} else {
										if (noCurrentTicketSelected != currentSelectTicketType) {
											if (getCurrentSelectTicketTypeDirection() == ticketTypeTwoWay) {
												alert("Моля избрете място за тръгване!");
											} else {
												alert("Избраният тип билет не е двупосочен!");
											}
										} else {
											alert("Моля избeрете билет(и)!");
										}
									}										
								}
							} else {
								alert("Моля първо избeрете билет(и)!");	
							}
						}
					}
				}
			} 				
		} else {
			if (element.className == "reservedByMe") {
				return true;
			} else {
				alert("Моля първо избeрете билет(и)!");
			}
		}
	} else {		
		showWindow(selectSeatWhenUserIsNotLogged);
	}
	return false;
};
function clearChosenSeats() {
	if (showVehicleSeats) {	
		getSeatData(false); 	
	} if (showVehicleReturnSeats) {
		getReturnSeatData();
	}
};

