$(document).ready(function(){
	
// ========================== Tours Bundle Admin Part ==============================
	
   // bind calendar (datepicker) plugin
   if($("p#tour-calendar").length != 0) {
	   var dates = eval($("input[name='calendar-dates']").val());
	   $("p#tour-calendar").DatePicker({
			flat: true,
			date: dates,
			calendars: 2,
			mode: 'multiple',
			starts: 1,
			format: 'Y-m-d',
			onRender: function(){ return { disabled: true }; },
			locale: {
				days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
				daysShort: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
				daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
				months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
				monthsShort: ["Янв", "Фев", "Март", "Апр", "Май", "Июнь", "Июль", "Авг", "Сент", "Окт", "Ноя", "Дек"],
				weekMin: 'нд'
			}
		});
	   	
	   	if($(".use-calendar-value").attr('value') == 'false') {
	   		$("p#tour-calendar").hide();
	   	}
   }
		
   // bind uploadify plugin
   if($("#tour-upload-multiple").length != 0) {
	   var uplodifyListContent = '';
	   var renderId = $("#tour-upload-multiple").attr("renderTo");
	   var renderTo = $("#"+renderId);
       var scriptPath = $("#tour-upload-multiple").attr("script");
       var queueId = $("#tour-upload-multiple").attr("queue");
       
       uplodifyListContent = $("#"+queueId).html();
       
       // global options for uploadify
       uploadifyOptions.script = scriptPath;
       uploadifyOptions.queueID = queueId;
       
       uploadifyOptions.onComplete = function(event, queueId, fileObj, responce, data) {
	       	if(renderTo.hasClass("empty")) {
	    		renderTo.removeClass("empty");
	    		renderTo.html('');
			}
			renderTo.append(responce);
       };
       
       uploadifyOptions.onAllComplete = function(event, data) {
    	    $("#"+renderId+" a.lightbox").lightBox(lightboxSettings);
           	$("#"+queueId).html(uplodifyListContent+'<br/><br/><span style="color: green; font-size: 18px;">Загрузка завершена.<br/>Файлов отправлено: '+data.filesUploaded+'</span>');
           	
           	if($("#tour-main-image").hasClass("empty")) {
	           	var href = $("#tour-additional-images .image-thumb .thumb-image a").attr("href");
	            $.ajax({
	     	       	url: href,
	     	       	success: function(responce){    	   		
	     	            if(responce != "Error") {
	     	               $("#tour-main-image").html(responce);
	     	               $("#tour-main-image").removeClass("empty");
	     	               $("#tour-main-image a.lightbox").lightBox(lightboxSettings);
	     	            }
	     	       	}
	            });
           	}
       };
       
       $("#tour-upload-multiple").uploadify(uploadifyOptions);
   }
	
   // bind lightbox plugin
   if($("#tour-main-image").length != 0) $("#tour-main-image a.lightbox").lightBox(lightboxSettings);
   if($("#tour-additional-images").length != 0) $("#tour-additional-images a.lightbox").lightBox(lightboxSettings);
	
   // work when add tour
   if($(".tours-add-select-category").val() == 'other') {
	   $(".tours-add-select-new-category").show();
   }
   
   // work when add tour
   if($(".tours-add-select-type").val() == 'other') {
	   $(".tours-add-select-new-type").show();
   }
   
   // work when add tour
   $(".tours-add-select-category").change(function(){
	   var value = $(this).val();
	   if(value == 'other') {
		   $(".tours-add-select-new-category").show();
	   } else {
		   $(".tours-add-select-new-category").hide();
		   $(".tours-add-select-new-category").val('');
	   }
   });
   
   // work when add tour
   $(".tours-add-select-type").change(function(){
	   var value = $(this).val();
	   if(value == 'other') {
		   $(".tours-add-select-new-type").show();
	   } else {
		   $(".tours-add-select-new-type").hide();
		   $(".tours-add-select-new-type").val('');
	   }
   });
   
   // work when tour partial edit - edit mode
   var sourceContent; //saves some text
   $(".tour-view-edit").live('click', function(){
	  var item = $(this).attr('href');
	  var needLinks = true;
	  
	  switch(item) {
		  case 'edit-title':
			  var value = $(".value[type='"+item+"']").text();
			  $(".value[type='"+item+"']").hide();
			  $(".value[type='field-"+item+"']").show();
			  $(".value[type='field-"+item+"'] > input").val(value);
			  break;
		  case 'edit-description':
		  case 'edit-route':
		  case 'edit-side-info':
			  var editObj = $(".value[type='"+item+"']");
			  sourceContent = editObj.html();
			  tinyMceOptions['width'] = "800px";
			  tinyMceOptions['height'] = "300px";
			  editObj.tinymce(tinyMceOptions);
			  break;
		  case 'edit-basic-info':
			  $(".value .category-value").hide();
			  var catNum = $(".category-value a").attr('href').match(/(\d+)/ig);
			  $(".edit-category-value select").val(catNum);
			  $(".edit-category-value").show();
			  
			  $(".place-value").hide();
			  $(".edit-place-value textarea").val($(".place-value").text());
			  $(".edit-place-value").show();
			  
			  $(".type-value").hide();
			  var typeNum = $(".type-value a").attr('href').match(/(\d+)/ig);
			  $(".edit-type-value select").val(typeNum);
			  $(".edit-type-value").show();
			  
			  $(".contract-value").hide();
			  var contract_name = $(".contract-value").text();
			  $(".edit-contract-value select").val(contract_name);
			  $(".edit-contract-value").show();
			  
			  $(".duration-value").hide();
			  var tmpArr = $(".duration-value").text().split(' ', 2);
			  $(".edit-duration-value input").val(tmpArr[0]);
			  $(".edit-duration-value").show();
			  
			  $(".season-value").hide();
			  var typeNum = $(".season-value").attr('start');
			  $(".edit-season-value select.start-list").val(typeNum);
			  typeNum = $(".season-value").attr('end');
			  $(".edit-season-value select.end-list").val(typeNum);
			  $(".edit-season-value").show();
			  
			  $(".price-value").hide();
			  var tmpArr = $(".price-value").text().split(' ', 2);
			  $(".edit-price-value input").val(tmpArr[0]);
			  $(".edit-price-value").show();
			  
			  $(".hidden-value").hide();
			  var isHidden = $(".hidden-value").attr('hidden');
			  $(".edit-hidden-value input").val([isHidden]);
			  $(".edit-hidden-value").show();
			  
			  $(".is-new-value").hide();
			  var isNew = $(".is-new-value").attr('new');
			  $(".edit-is-new-value input").val([isNew]);
			  $(".edit-is-new-value").show();
			  
			  $(".tour-type-value").hide();
			  var ttype = $(".tour-type-value").attr('ttype');
			  $(".edit-tour-type-value input").val([ttype]);
			  $(".edit-tour-type-value").show();
			  break;
		  case 'edit-calendar':
			  $(".use-calendar-value").hide();
			  var useCalendar = $(".use-calendar-value").attr('value');
			  $(".use-calendar-edit-value select.use-calendar-select").val(useCalendar);
			  $(".use-calendar-edit-value").show();
			  if(useCalendar == 'true') {
				  $("p#tour-calendar").DatePickerEnable();
				  $("a.reset-calendar-dates").show();
			  }
			  break;
		  case 'edit-map':
			  $(".map-value").hide();
			  $(".edit-map-value").show();
			  break;
		  default:
			  
			  break;
	  }
	  
	  if(needLinks) {
		  $(this).text('сохранить');
		  $(this).removeClass('tour-view-edit');
		  $(this).toggleClass('tour-view-save');
		  $(".tour-view-cancel[href='"+item+"']").parent().show();		  
	  }
	  
	  return false;
   });
   
   // work when tour partial edit - save mode
   $(".tour-view-save").live('click', function(){
	   var item = $(this).attr('href');
	   var mustSave = true;
	   
	   switch(item) {
		  case 'edit-title':
			  var value = $(".value[type='field-"+item+"'] > input").val();
			  $(".value[type='"+item+"']").text(value);
			  
			  break;
		  case 'edit-description':
		  case 'edit-route':
		  case 'edit-side-info':
			  sourceContent = $(".value[type='"+item+"']").html();
			  var value = sourceContent;
			  break;
		  case 'edit-basic-info':
			  var value = [];
			  
			  var editedObj = $(".edit-category-value select option:selected");
			  value.push(editedObj.val());
			  var href = $(".category-value a").attr('href');
			  $(".category-value a").attr('href', href.replace(/(\d+)/ig, editedObj.val()));
			  $(".category-value a").text(editedObj.text());
			  
			  var editedObj = $(".edit-place-value textarea");
			  value.push(editedObj.val());
			  $(".place-value").text(editedObj.val());
			  
			  var editedObj = $(".edit-type-value select option:selected");
			  value.push(editedObj.val());
			  var href = $(".type-value a").attr('href');
			  $(".type-value a").attr('href', href.replace(/(\d+)/ig, editedObj.val()));
			  $(".type-value a").text(editedObj.text());
			  
			  var editedObj = $(".edit-contract-value select option:selected");
			  value.push(editedObj.val());
			  $(".contract-value").text(editedObj.text());
			  
			  var editedObj = $(".edit-duration-value input");
			  var tmpVal = parseInt(editedObj.val());
			  value.push(tmpVal);
			  var dayStr = 'дней';
			  if(tmpVal == 1) dayStr = 'день';
			  else if(tmpVal > 1 && tmpVal < 5) dayStr = 'дня';
			  $(".duration-value").text(''+tmpVal+' '+dayStr);
			  
			  var editedObj = $(".edit-season-value select.start-list option:selected");
			  var tmpVal = editedObj.text();
			  value.push(editedObj.val());
			  $(".season-value").attr('start', editedObj.val());
			  var editedObj = $(".edit-season-value select.end-list option:selected");
			  tmpVal += ' - ' + editedObj.text();
			  value.push(editedObj.val());
			  $(".season-value").attr('end', editedObj.val());
			  $(".season-value").text(tmpVal);
			  
			  var editedObj = $(".edit-price-value input");
			  var tmpVal = parseInt(editedObj.val().replace(/([\,\.]?)/g, ''));
			  value.push(tmpVal);
			  $(".price-value").text(tmpVal.triads('.', ',', 0) + ' руб.');
			  
			  var editedObj = $(".edit-hidden-value input:checked");
			  value.push(editedObj.val());
			  $(".hidden-value").attr('hidden', editedObj.val());
			  if(editedObj.val() == 'true') {
				  $(".hidden-value").html('<b style="color: red;">Нет</b>');
			  } else {
				  $(".hidden-value").html('<b style="color: green;">Да</b>');
			  }
			  
			  var editedObj = $(".edit-is-new-value input:checked");
			  value.push(editedObj.val());
			  $(".is-new-value").attr('new', editedObj.val());
			  if(editedObj.val() == 'true') {
				  $(".is-new-value").text('Отображается как новый');
			  } else {
				  $(".is-new-value").text('Отображается как не новый');
			  }
			  
			  var editedObj = $(".edit-tour-type-value input:checked");
			  value.push(editedObj.val());
			  $(".tour-type-value").attr('ttype', editedObj.val());
			  
			  if(editedObj.val() == 'tour') {
				  $(".tour-type-value").text('Тур');
			  }
			  if(editedObj.val() == 'base') {
				  $(".tour-type-value").text('База отдыха');
			  }
			  if(editedObj.val() == 'corp') {
				  $(".tour-type-value").text('Корпоратив');
			  }
			  break;
		  case 'edit-calendar':
			  var value = [];
			  var editedObj = $(".use-calendar-edit-value select.use-calendar-select option:selected");
			  value.push(editedObj.val());
			  $(".use-calendar-value").attr('value', editedObj.val()).text('('+editedObj.text()+')');
			  value.push($("p#tour-calendar").DatePickerGetDate(true));
			  break;
		  case 'edit-map':
			  sourceContent = $(".edit-map-value textarea").val();
			  var value = sourceContent;
			  $(".map-value").html(sourceContent);
			  $(".edit-map-value textarea").text(sourceContent);
			  break;
		  default:
			  mustSave = false;
			  break;
	   }
	   
	   if(mustSave) {
		   var saveData = {
				data: value, 
				tourid: $(".content-view").attr("tourid")
		   };
		   $.ajax({
				type:"POST",
				url: "/admin/tours/part-edit/"+item+"/",
				data: saveData,
				async: true,
				success: function(result) {
			   		if(result == 'OK') {
			   			createMessage('Изменения успешно сохранены');
			   		} else {
			   			createMessage('К сожалению, изменения сохранить не удалось. Перезагрузите страницу');
			   		}
		   		}
		   });
	   }
	   
	   $(".tour-view-cancel[href='"+item+"']").click();
	   
	   return false;
   });
   
   // work when tour partial edit - cancel edit
   $(".tour-view-cancel").live('click', function(){
	   var item = $(this).attr('href');
	   var needDelLinks = true;
	   $(".tour-edit-form-reset").click();
	   
	   switch(item) {
	   		case 'edit-title':
	   			$(".value[type='field-"+item+"']").hide();
	   			$(".value[type='"+item+"']").show();
	   			break;
	   		case 'edit-description':
	   		case 'edit-route':
	   		case 'edit-side-info':
	   			var editObj = $(".value[type='"+item+"']");
	   			tinyMCE.get(editObj.attr('id')).remove();
	   			editObj.html(sourceContent);
				break;
	   		case 'edit-basic-info':
	   			$(".value .edit-category-value").hide();
	   			$(".value .category-value").show();
			  
	   			$(".value .edit-place-value").hide();
	   			$(".value .place-value").show();
			  
	   			$(".value .edit-type-value").hide();
	   			$(".value .type-value").show();
	   			
	   			$(".value .edit-contract-value").hide();
	   			$(".value .contract-value").show();
	   			
	   			$(".value .edit-duration-value").hide();
	   			$(".value .duration-value").show();
			  
	   			$(".value .edit-season-value").hide();
	   			$(".value .season-value").show();
			  
	   			$(".value .edit-price-value").hide();
	   			$(".value .price-value").show();
			  
	   			$(".value .edit-hidden-value").hide();
	   			$(".value .hidden-value").show();
	   			
	   			$(".value .edit-is-new-value").hide();
	   			$(".value .is-new-value").show();
				
	   			$(".value .edit-tour-type-value").hide();
	   			$(".value .tour-type-value").show();
	   			break;
	   		case 'edit-calendar':
	   			$(".use-calendar-edit-value").hide();
	   			$(".use-calendar-value").show();
				var useCalendar = $(".use-calendar-value").attr('value');
				$(".use-calendar-edit-value select.use-calendar-select").val(useCalendar);
				changeCalendarVisible(useCalendar);
				$("a.reset-calendar-dates").hide();
				if(useCalendar == 'true') {
					$("p#tour-calendar").DatePickerDisable();
				}
	   			break;
			case 'edit-map':
				$(".value .edit-map-value").hide();
	   			$(".value .map-value").show();
				break;
			default:
				
				break;
	   }
	   
	   if(needDelLinks) {
		   var linkObj = $(".tour-view-save[href='"+item+"']");
		   linkObj.text('редактировать');
		   linkObj.removeClass('tour-view-save');
		   linkObj.toggleClass('tour-view-edit');
		   $(this).parent().hide();
	   }
	   
	   return false;
   });
   
   var changeCalendarVisible = function(value) {
	   if(value == 'false') {
		   $("p#tour-calendar").hide();
		   $("span.tour-calendar-pre-text").text("Даты туров отсутствуют");
		   $("a.reset-calendar-dates").hide();
	   } else {
		   $("p#tour-calendar").show();
		   var datesArr = $("p#tour-calendar").DatePickerGetDate(true);
		   $("span.tour-calendar-pre-text").text("Даты начала туров (выбрано: "+datesArr.length+")");
		   $("a.reset-calendar-dates").show();
	   }
   };
   
   // use-calendar select (show or not calendar)
   $(".use-calendar-select").change(function(){
	   changeCalendarVisible($(this).val());
   });
   
   // reset all dates in calendar
   $("a.reset-calendar-dates").click(function(){
	   $("p#tour-calendar").DatePickerClear();
	   $("p.tour-calendar-pre-text").text("Даты начала туров (выбрано: 0)");
	   return false;
   });
   
   // work when tour want delete
   $(".tours-delete-link-confirm").click(function(){
	   if(confirm('Этот тур будет безвозвратно удален. Вы хотите продолжить?')) {
		   return true;
	   }
	   return false;
   });
   
   // вопрос при нажатии ссылки "удалить"
   $(".delete-confirm-noajax").click(function(){
	   if(confirm('Запись будет удалена безвозвратно. Продолжить?')) {
		   return true;
	   }
	   return false;
   });
   
   // work when category or type partial edit - edit mode
   $(".edit-link").live('click', function(){
	   var pp = $(this).parent().parent();
	   var id = pp.attr('idc');
	   var item = pp.parent().parent().attr('item');
	   var value = $("."+item+"-value-"+id+" a").text();
	   $(".edit-"+item+"-value-"+id+" input").val(value);
	   $("."+item+"-value-"+id).hide();
	   $(".edit-"+item+"-value-"+id).show();
	   return false;
   });
   
   // work when category or type partial edit - save mode
   $(".save-edited").live('click', function(){
	   var pp = $(this).parent().parent();
	   var id = pp.attr('idc');
	   var item = pp.parent().parent().attr('item');
	   var value = $(".edit-"+item+"-value-"+id+" input").val();
	   
	   if(value != '') {
		   $("."+item+"-value-"+id+" a").text(value);
		   var link = $(this).attr('href');
		   $.ajax({
				type:"POST",
				url: link,
				data: { data: value },
				async: true,
				success: function(result) {
			   		if(result == 'OK') {
			   			createMessage('Изменения успешно сохранены');
			   		} else {
			   			createMessage('К сожалению, изменения сохранить не удалось. Перезагрузите страницу');
			   		}
		   		}
		   });
	   }
	   
	   $(".edit-"+item+"-value-"+id+" a[href='cancel']").click();
	   return false;
   });
   
   // work when category or type partial edit - cancel edit
   $(".cancel-edit").live('click', function(){
	   var pp = $(this).parent().parent();
	   var id = pp.attr('idc');
	   var item = pp.parent().parent().attr('item');
	   $(".edit-"+item+"-value-"+id).hide();
	   $("."+item+"-value-"+id).show();
	   return false;
   });
   
   // work when want delete category or type or contract
   $(".delete-link-confirm").live('click', function(){
	   if(confirm('Запись будет удалена безвозвратно. Продолжить?')) {
		   var link = $(this).attr('href');
		   var tr = $(this).parent().parent();
		   $.ajax({
				type:"POST",
				url: link,
				async: true,
				success: function(result) {
			   		if(result == 'OK') {
			   			createMessage('Изменения успешно сохранены');
			   			tr.remove();
			   		} else {
			   			createMessage('К сожалению, удалить запись не удалось. Перезагрузите страницу');
			   		}
		   		}
		   });
	   }
	   return false;
   });
   
   // work when want add category or type - edit mode
   $(".add-record").click(function(){
	   $(this).hide();
	   $(this).next().show();
	   return false;
   });
   
   // work when want add category or type - save mode
   $(".add-save").live('click', function(){
	   var value = $(this).prev().val();
	   if(value != '') {
		   var link = $(this).attr('href');
		   $.ajax({
				type:"POST",
				url: link,
				data: { data: value },
				async: true,
				success: function(result) {
					if(result == 'OK') {
			   			window.location.reload(true);
			   		} else {
			   			createMessage('К сожалению, изменения сохранить не удалось. Перезагрузите страницу');
			   		}
		   		}
		   });
	   }
	   $(this).next().click();
	   return false;
   });
   
   // work when want add category or type - cancel add
   $(".add-cancel").live('click', function(){
	   var parent = $(this).parent();
	   parent.hide();
	   parent.prev().show();
	   $(".tour-edit-form-reset").click();
	   return false;
   });
   
   $(".delete-image a").live('click', function(){
       var href = $(this).attr("href");
       var grandParent = $(this).parent().parent();
       grandParent.animate({opacity: 0.0}, 700);
       $.ajax({ 
	       	url: href, 
	       	success: function(responce){
    	   		if(responce == "OK") {
    	   			grandParent.remove();
    	   			$("#tour-additional-images a.lightbox").lightBox(lightboxSettings);
    	   			
    	   		} else {
    	   			grandParent.animate({opacity: 1.0}, 600);
    	   		}
	       	}
       });
       return false;
   }); 
   
   $(".thumb-image a").live('click', function(){
       var href = $(this).attr("href");
       var grandParent = $(this).parent().parent();
       grandParent.animate({opacity: 0.3}, 600);
       $.ajax({
	       	url: href,
	       	success: function(responce){    	   		
	            if(responce != "Error") {
	            	$(".image").removeClass("image-thumb");
	                grandParent.addClass("image-thumb");
	                grandParent.animate({opacity: 1.0}, 600);
	                $("#tour-main-image").html(responce);
	                $("#tour-main-image a.lightbox").lightBox(lightboxSettings);
	            }
	       	}
       });
       return false;
   });
   
   $("a.view-contract").live('click', function(){
	   var href = $(this).attr("href");
	   var popup_window = window.open(href, '', 'width=800, height=600, scrollbars=yes');
	   popup_window.opener = window;
	   popup_window.focus();
	   return false;
   });
   
   $("a.contract-edit-link").click(function(){
	   var href = $(this).attr("href");
	   var name = $(this).attr("name");
	   $.ajax({
	       	url: href,
	       	success: function(responce){    	   		
	            if(responce != "Error") {
	            	var el = $("div.tinymce[name='"+name+"']");
	            	el.html(responce);
	  			  	tinyMceOptions.width = "1000px";
	  			  	tinyMceOptions.height = "500px";
	  			  	el.tinymce(tinyMceOptions);
	  			  	el.parent().parent().css("display", "table-row");
	  			  	$("td[name='"+name+"'] a.contract-save-edited").show();
	  			  	$("td[name='"+name+"'] a.contract-cancel-edit").show();
	  			  	
	            } else {
	            	alert("Файл не найден. Пожалуйста, обратитесь к администратру.");
	            }
	       	}
	   });
	   return false;
   });
   
   $("a.contract-save-edited").click(function(){
	   var href = $(this).attr("href");
	   var name = $(this).parent().attr("name");
	   var el = $("div.tinymce[name='"+name+"']");
	   $.ajax({
			type: "POST",
			url: href,
			data: {contract: el.html() },
			async: true,
			success: function(result) {
		   		if(result == 'OK') {
		   			createMessage('Изменения успешно сохранены');
		   			$("td[name='"+name+"'] a.contract-cancel-edit").click();
		   		} else {
		   			createMessage('К сожалению, изменения сохранить не удалось. Перезагрузите страницу');
		   		}
	   		}
	   });
	   
	   return false;
   });
   
   $("a.contract-cancel-edit").click(function(){
	   var name = $(this).parent().attr("name");
	   var el = $("div.tinymce[name='"+name+"']");
	   el.parent().parent().css("display", "none");
	   tinyMCE.get(el.attr('id')).remove();
	   $(this).prev().hide();
	   $(this).hide();
	   return false;
   });
   
   $(".contract-add").click(function(){
	   $(this).hide();
	   $(this).next().show();
	   tinyMceOptions.width = "1000px";
	   tinyMceOptions.height = "500px";
	   $("div.tinymce[name='add']").tinymce(tinyMceOptions);
	   $("div.tinymce[name='add']").show();
	   return false;
   });
   
   $(".contract-add-cancel").click(function(){
	   $("div.tinymce[name='add']").hide();
	   tinyMCE.get($("div.tinymce[name='add']").attr('id')).remove();
	   $("div.tinymce[name='add']").empty();
	   $(this).parent().hide();
	   $(this).parent().prev().show();
	   return false;
   });
   
   $(".contract-add-save").click(function(){
	   var href = $(this).attr("href");
	   var sendData = {
		   contract: $("div.tinymce[name='add']").html(),
		   name: $("input.contract-add-name").val()
	   };
	   $.ajax({
			type:"POST",
			url: href,
			data: sendData,
			async: true,
			success: function(result) {
				if(result == 'OK') {
		   			window.location.reload(true);
		   		} else {
		   			createMessage('К сожалению, изменения сохранить не удалось. Перезагрузите страницу');
		   		}
	   		}
	   });
	   return false;
   });
   
// ========================= Tours Bundle Admin Part (End) ==============================

// ========================= Tours Bundle Client Part ===================================
   
   // show and hide link to route of tour text
   $("a.open-route-link").click(function(){
	   var image = $("a.open-route-link img").attr("src");
	   if(image.indexOf("minus") != -1) {
		   $(".route-text-block").hide();
		   $("a.open-route-link img").attr("src", image.replace("minus", "plus"));
	   } else {
		   $(".route-text-block").show();
		   $("a.open-route-link img").attr("src", image.replace("plus", "minus"));
	   }
	   return false;
   });
   
   // show all images
   $(".more-images-link").click(function(){
	   $(".images a.hide-image").each(function(){
		   $(this).toggleClass("hide-image");
		   $(this).toggleClass("show-image");
	   });
	   $(this).hide();
	   return false;
   });
   
   // bind lightbox plugin
   if($("#images-table").length != 0) {
	   $(".main-image a.lightbox").lightBox(lightboxSettings);
	   $(".images a.lightbox").lightBox(lightboxSettings);
   }
   
   // bind calendar (datepicker) plugin
   if($(".tour-single-calendar").length != 0) {
	   var dates = eval($("input[name='calendar-dates']").val());
	   var options = $.extend({}, datepickerOptions);
	   options.onlySelected = true;
	   options.onlyClick = true;
	   options.date = dates;
	   options.mode = 'multiple';
	   options.outFormat = 'd.m.Y';
	   options.onChange = function(formated, dates){
		   showReserveForm(formated);
	   };
	   $("p#calendar").DatePicker(options);
   }
   
   var bindCalendarToReserveForm = function() {
	   	var dates;
	   	var options = $.extend({}, datepickerOptions);
	   	if($("input[name='calendar-dates']").length != 0) {
	   		dates = eval($("input[name='calendar-dates']").val());
	   		options.onlySelected = true;
		   	options.onlyClick = true;
		   	options.mode = 'multiple';
	   	} else {
	   		dates = [];
	   	}
	   	options.date = dates;
	   	options.position = 'right';
	   	options.outFormat = 'd.m.Y';
	   	options.flat = false;
	   	options.onChange = function(formated, dates){
		   $("#tour-reserve-calendar").val(formated);
		   $("#tour-reserve-calendar").DatePickerHide();
	   	};
	   	$("#tour-reserve-calendar").DatePicker(options);
	   	$("#tour-reserve-calendar").GetDatePicker().css("z-index", "200");
   };
   
   var showReserveForm = function(date) {
	   $("#overlay").show();
	   $("#tour-reserve-form").show();
	   $(".reserve-ajax-loader").show();
	   var tourId = $(".inserted-form").attr('tour_id');
	   $.ajax({
	       	url: '/tours/reserve/'+tourId+'/',
	       	async: true,
	       	success: function(responce){
		   		$(".reserve-ajax-loader").hide();
		   		$(".inserted-form").html(responce);
	            if(date !== undefined) $("#tour-reserve-calendar").val(date);
	            bindCalendarToReserveForm();
	       	}
	   });
   };
   
   // show tour-reserve form
   $(".reserve .button a").click(function(){
	   showReserveForm();
	   return false;
   });
   
   $("#tour-reserve-form .close-btn").click(function(){
	   $("#tour-reserve-form").hide();
	   $("#overlay").hide();
	   if($("#tour-reserve-calendar").length != 0) {
		   $("#tour-reserve-calendar").GetDatePicker().remove();
	   }
	   $(".inserted-form").empty();
	   return false;
   });
   
   $("#tour-reserve-form form").live('submit', function(){
	   var data = $(this).serialize();
	   var link = $(this).attr('action');
	   var method = $(this).attr('method');
	   $(".inserted-form").hide();
	   $(".reserve-ajax-loader").show();
	   $.ajax({
		   	async: true,
	       	url: link,
	       	data: data,
	       	type: method,
	       	success: function(responce){    	   		
		   		var element = responce.substr(1, 4);
		   		$(".inserted-form").html(responce);
		   		if(element == 'form') bindCalendarToReserveForm();
		   		$(".reserve-ajax-loader").hide();
		   		$(".inserted-form").show();
	       	}
	   });
	   return false;
   });
   
   // bind tours-matching calendar (datepicker) plugin
   if($(".tours-matching-calendar").length != 0) {
	   // two calendars in tours-main page 
	   var options = $.extend({}, datepickerOptions);
	   options.calendars = 2;
	   options.mode = 'range';
	   options.format = 'd.m.Y';
	   options.onChange = function(formated, dates){
		   if(!isNaN(dates[0])) {
			   $("#matching-calendar-manual-start").val(formated[0]);
			   $("#matching-calendar-manual-end").val(formated[1]);
		   }
	   };
	   $("div#matching-calendar").DatePicker(options);
	   
	   // first small calendar in main page (bind to input field)
	   
	   var optionsForManual = $.extend({}, datepickerOptions);
	   $("#matching-calendar-manual-start").val(getDateStr(new Date()));
	   optionsForManual.flat = false;
	   optionsForManual.position = 'left';
	   optionsForManual.format = 'd.m.Y';
	   optionsForManual.date = $("#matching-calendar-manual-start").val();
	   optionsForManual.current = $("#matching-calendar-manual-start").val();
	   optionsForManual.onBeforeShow = function(){
		   $("#matching-calendar-manual-start").DatePickerSetDate($("#matching-calendar-manual-start").val(), true);
	   };
	   optionsForManual.onChange = function(formated, dates){
		   var prevVal = $("#matching-calendar-manual-start").val();
		   if(formated != prevVal) {
			   $("#matching-calendar-manual-start").val(formated);
			   $("#matching-calendar-manual-start").DatePickerHide();
		   }
	   };
	   $("#matching-calendar-manual-start").DatePicker(optionsForManual);
	   
	   // second small calendar in main page (bind to input field)
	   var now = new Date();
	   var addNow = new Date();
	   addNow.setDate(now.getDate() + 30);
	   $("#matching-calendar-manual-end").val(getDateStr(addNow));
	   optionsForManual.date = $("#matching-calendar-manual-end").val();
	   optionsForManual.current = $("#matching-calendar-manual-end").val();
	   optionsForManual.onBeforeShow = function(){
		   $("#matching-calendar-manual-end").DatePickerSetDate($("#matching-calendar-manual-end").val(), true);
	   };
	   optionsForManual.onChange = function(formated, dates){
		   var prevVal = $("#matching-calendar-manual-end").val();
		   if(formated != prevVal) {
			   $("#matching-calendar-manual-end").val(formated);
			   $("#matching-calendar-manual-end").DatePickerHide();
		   }
	   };
	   $("#matching-calendar-manual-end").DatePicker(optionsForManual);
	   
   }
   
   // reset calendar's range in tours-main page
   $(".td-button .reset-link").click(function(){
	   $("div#matching-calendar").DatePickerClear();
	   return false;
   });
   
   $("button.matching-button").click(function(){
	   $(".tour-matching-content").addClass('ajax-loading');
	   var start_date = $("#matching-calendar-manual-start").val();
	   var end_date = $("#matching-calendar-manual-end").val();
	   var link = $(this).attr("link");
	   
	   if(start_date == '') start_date = 'undef';
	   if(end_date == '') end_date = 'undef';
	   link = link.replace('start', start_date).replace('end', end_date);
	   
	   $.ajax({
	       	url: link,
	       	success: function(responce){    	   		
		   		$(".tour-matching-content").html(responce);
		   		if(responce != '') {
	            	$(".tour-matching-text").text("В выбранные даты попадают следующие туры:");
	            } else {
	            	$(".tour-matching-text").text("Извините, но выбранные даты нет туров:");
	            }
		   		$(".tour-matching-content").removeClass('ajax-loading');
	       	}
       });
	   
	   link = $(this).attr("link");
	   $(this).attr("link", link.replace(/(\d+)/ig, '1').replace('all', '1'));
	   return false;
   });
   
   $(".tour-paginator").live('click', function(){
	   var page = $(this).text();
	   if(page == 'все') page = 'all';
	   var link = $("button.matching-button").attr("link");
	   link = link.replace(/(\d+)/ig, page);
	   $("button.matching-button").attr("link", link);
	   $("button.matching-button").click();
	   return false;
   });
   
// ========================= Tours Bundle Client Part (End) =============================
   
});
   
