// JavaScript Document
$(document).ready(function(){ 
 
 managePolicySelection($("#groupID").val()); 
						   
 setDestination($("#groupID").val());
 
 $('#destinationType').val($('#destinationLoad').val());
 
 manageDestinationSelection($('#destinationLoad').val());
 
 if( $("#groupID").val() == '21') {
  manageCategory($('#categoryLoad').val());	
 }
 
 if($('#golfAddon').val() == 'yes') {
  $('#addon_1').attr('checked','checked');
 }
 if($('#skiAddon').val() == 'yes') {
  $('#addon_2').attr('checked','checked');	 
 }
 
 if($('#categoryLoad').val() == 'single') {
  $('#category_1').attr('checked','checked');	 
 }
 else if($('#categoryLoad').val() == 'annual') {
  $('#category_2').attr('checked','checked');	 	 
 }
 
 //

 
 //alert("reloead");
 
 
 $("#notResidentLnk").hover(function(e) {		
			x = e.pageX-101;		
			$('#notResidentHelp').css("left", x + "px");
		},function() {		
			$('#notResidentHelp').css("left", "-9999px");			
 });
 
 $("#over65Lnk").hover(function(e) {		
			x = e.pageX-101;		
			$('#over65Help').css("left", x + "px");
		},function() {		
			$('#over65Help').css("left", "-9999px");			
 });
 
 $("#groupID").change(function(){ 
  setDestination($("#groupID").val());
  managePolicySelection($("#groupID").val()); 
 });
 
 $("#destinationType").change(function(){ 
  manageDestinationSelection($("#destinationType").val());
 });
 
 
 $("#category_2").click(function () { 
   manageCategory('annual');
 });
 
 $("#category_1").click(function () { 								  
  manageCategory('single');
 });
 
 
 $("#departureDate").datepicker({
   showOn: 'button', 
   buttonImage: '/files/images/icons/icon-calendar.gif', 
   buttonImageOnly: true,
   numberOfMonths: 2,
   showButtonPanel: true,
   dateFormat: 'dd/mm/yy'			
 });
 
 $("#returnDate").datepicker({
   showOn: 'button', 
   buttonImage: '/files/images/icons/icon-calendar.gif', 
   buttonImageOnly: true,
   numberOfMonths: 2,
   showButtonPanel: true,
   dateFormat: 'dd/mm/yy'	
 }); 
 
 $("#quoteForm").validate({  
   submitHandler: function(form) {	   
	 if(businessRulesAreValid()) {	  
	   document.getElementById('quoteForm').submit();  	 
	 }		
   },	
    rules: { 
	  groupID: "required",
	  destinationType: "required",  
	  departureDate: "required",	 
	  returnDate: {
	      required: function(element) {		   	  
	       return isReturnDateRequired(); 
          }
	  },	  
	  oldestTraveler: "required"  
    },
	messages: {
	  groupID: "Please select a type of Policy",
	  destinationType: "Please select your Destination",
	  departureDate: "The departing field must be set with the type of policy you've selected.",
	  returnDate: "The returning field must be set with the type of policy you've selected.",	 
	  oldestTraveler: "Please select the Age of Eldest Traveller"	  
	}, 
	errorPlacement: function(error, element) {  
	  if(element.attr('id') == 'groupID') {
		 error.prependTo($('#errorMsgContainer'));
	   $('<span class="clear">&nbsp;</span>').appendTo($('#errorMsgContainer'));    
	  }
	  else {
	   error.appendTo($('#errorMsgContainer'));
	   $('<span class="clear">&nbsp;</span>').appendTo($('#errorMsgContainer'));  
	  }	
	}	
  
 });
 
 
});

function setDestination(groupID) { 
 $("#destinationType").removeOption(/./);
 switch(parseInt(groupID)) {
  case 17:   
   var selectOptions = {
	"Europe" : "Europe",
	"Worldwide inc. USA" : "Worldwide inc. USA"
   }
   break;
  case 18:
   var selectOptions = {
	"UK/Ireland" : "UK/Ireland",   
	"Europe" : "Europe",
	"Worldwide exc. USA" : "Worldwide exc. USA",
	"Worldwide inc. USA" : "Worldwide inc. USA"
   }
   break;
  case 19:
   var selectOptions = {
	"UK/Ireland" : "UK/Ireland",   
	"Europe" : "Europe",
	"Worldwide exc. USA" : "Worldwide exc. USA",
	"Worldwide inc. USA" : "Worldwide inc. USA"
   }
   break;
  case 20:
   var selectOptions = {	   
	"Europe" : "Europe",
	"Worldwide exc. USA" : "Worldwide exc. USA",
	"Worldwide inc. USA" : "Worldwide inc. USA"
   } 
   break;
  case 21:
   var selectOptions = {
	"UK/Ireland" : "UK/Ireland",   
	"Europe" : "Europe",
	"Worldwide exc. USA" : "Worldwide exc. USA",
	"Worldwide inc. USA" : "Worldwide inc. USA"
   } 
   break;
  default:
    var selectOptions = {
	"UK/Ireland" : "UK/Ireland",   
	"Europe" : "Europe",
	"Worldwide exc. USA" : "Worldwide exc. USA",
	"Worldwide inc. USA" : "Worldwide inc. USA"
   }
   break;
 } 
 
 $("#destinationType").addOption(selectOptions, false); 
 
}

function managePolicySelection(groupID) {
	
 $('label[for=departureDate]').text('Departing *');	
 resetAddons();
 switch(parseInt(groupID)) {
  case 17:   
   $('#skiAddonContainer').css('display','block');  
   $('#golfAddonContainer').css('display','block');    
   $('#categoryContainer').css('display','block');    
   $('#returningDateContainer').css('display','none');
   $('#returnDate').val('');  
   $('#addon_2').attr('checked','checked');
   $('#addon_2').attr('disabled','disabled'); 
   $('label[for=departureDate]').text('Start Date *');
   break;
  case 18: 
   $('#returningDateContainer').css('display','block');    
   break;
  case 19:  
   $('#returningDateContainer').css('display','block');  
   break;
  case 20:   
   $('#skiAddonContainer').css('display','block');   
   $('#categoryContainer').css('display','block');    
   $('#returningDateContainer').css('display','block');   
   break;
  case 21:
   $('#singleTripCategoryContainer').css('display','block');
   $('#category_1').attr('checked','checked');  
   $('#returningDateContainer').css('display','block');  
   break;
  default:   
   $('#returningDateContainer').css('display','block');     
   break;
 } 	
}

function manageDestinationSelection(destination) { 

 resetAddons();
 $('label[for=departureDate]').text('Departing *'); 
  switch(parseInt($("#groupID").val())) {
  // annual	  
  case 17:  
 
   $('#categoryContainer').css('display','block');   
   $('#skiAddonContainer').css('display','block');
   $('#golfAddonContainer').css('display','block');    
   
   $('#addon_2').attr('checked','checked');
   $('#addon_2').attr('disabled','disabled');
   break;
   
  // sports
  case 18:    
  
  $('#categoryContainer').css('display','block');
   //$('#singleTripCategoryContainer').css('display','block');
   $('#category_1').attr('checked','checked');   
   $('#golfAddonContainer').css('display','block');
   $('#skiAddonContainer').css('display','block');    
   $('#returningDateContainer').css('display','block'); 
   $('#skiAndGolfAddonContainer').css('display','block');
   $('#addon_2').attr('checked','checked');
   //$('#addon_2').attr('disabled','disabled');
   
   break;
  // holiday 
  case 19:   
   break;
  // backpackers
  case 20:
   $('#categoryContainer').css('display','block');    
   $('#skiAddonContainer').css('display','block');
   break;
  // business 
  case 21:    
   if(destination.toLowerCase() == 'uk/ireland'  || destination.toLowerCase() == 'worldwide exc. usa') {
	$('#singleTripCategoryContainer').css('display','block');
    $('#category_1').attr('checked','checked');    
    $('#golfAddonContainer').css('display','block');
    $('#skiAddonContainer').css('display','block');
    $('#skiAndGolfAddonContainer').css('display','block');   
    $('#categoryContainer').css('display','block');    
    $('#returningDateContainer').css('display','block');         
   }
   else if(destination.toLowerCase() == 'europe'  || destination.toLowerCase() == 'worldwide inc. usa') {
	$('#singleTripCategoryContainer').css('display','block');
    $('#category_1').attr('checked','checked');
    $('#multiTripCategoryContainer').css('display','block');
    $('#golfAddonContainer').css('display','block');
    $('#skiAddonContainer').css('display','block');
    $('#skiAndGolfAddonContainer').css('display','block');   
    $('#categoryContainer').css('display','block');    
    $('#returningDateContainer').css('display','block');          
   }
   break;
  default:
   
   break;
 }  
}

function manageCategory(category) {
 if(category == 'single') {
	 $('#skiAndGolfAddonContainer').css('display','block'); 
  $('#returningDateContainer').css('display','block'); 
  $('label[for=departureDate]').text('Departing *');
  $('#addon_2').attr('checked','');
  $('#addon_2').attr('disabled',''); 
 }
 else if(category == 'annual') {
   $('#skiAndGolfAddonContainer').css('display','none');   
  $('#addon_3').attr('checked',''); 
  $('#addon_2').attr('checked','checked');
  $('#addon_2').attr('disabled','disabled');
  $('#returnDate').val('');
  $('#returningDateContainer').css('display','none'); 
  $('label[for=departureDate]').text('Start Date *'); 	 
 }
}

function isReturnDateRequired() {
 if($('#returningDateContainer').css('display') == 'block') {
   return true;	 
 }
 return false;	
}
function departureDateIsValid() {
 var departureDateStr = $('#departureDate').val(); 
 var tmp = departureDateStr.split("/");
 var dMonth = tmp[1]-1;  
 var dDay = tmp[0];
 var dYear =tmp[2];
 var todaysDate = new Date();
 var departureDate = new Date();
 departureDate.setMonth(dMonth);
 departureDate.setDate(dDay);
 departureDate.setFullYear(dYear); 
 if(dateCompare(todaysDate,departureDate) > 0) {
  $('<label class="error">Departure Date must be equal to or greater than todays date.</label>').appendTo($('#errorMsgContainer')); 
  $('#departureDate').addClass("error");
  return false;
 } 
 return true; 
}

function returnDateIsValid() {
 var departureDateStr = $('#departureDate').val();
 var returnDateStr = $('#returnDate').val();
 var tmp = departureDateStr.split("/");
 var tmp2 = returnDateStr.split("/");
 var dMonth = tmp[1]-1;  
 var dDay = tmp[0];
 var dYear = tmp[2];
 var rMonth = tmp2[1]-1;  
 var rDay = tmp2[0];
 var rYear = tmp2[2];
 var todaysDate = new Date();
 var departureDate = new Date();
 var returnDate = new Date();
 var errorMsg = "";
 departureDate.setMonth(dMonth);
 departureDate.setDate(dDay);
 departureDate.setFullYear(dYear);
 returnDate.setMonth(rMonth);
 returnDate.setDate(rDay);
 returnDate.setFullYear(rYear); 
 if(dateCompare(departureDate,returnDate) > 0) {
  $('<label class="error">Return date cannot be less than departure date.</label>').appendTo($('#errorMsgContainer')); 
  $('#returnDate').addClass("error");
  return false;	 
 }
 return true;
}

function resetAddons() {
 $('#category_1').attr('checked','');	
 $('#category_2').attr('checked','');
 $('#addon_1').attr('disabled','');
 $('#addon_2').attr('disabled','');
 $('#addon_3').attr('disabled','');
 $('#addon_1').attr('checked','');
 $('#addon_2').attr('checked','');
 $('#addon_3').attr('chcecked','');  
 $('#categoryContainer').css('display','none');
 $('#golfAddonContainer').css('display','none');
 $('#skiAddonContainer').css('display','none');
 $('#skiAndGolfAddonContainer').css('display','none');
 $('#singleTripCategoryContainer').css('display','none');
 $('#multiTripCategoryContainer').css('display','none');
}

function businessRulesAreValid() {
 var result = true;
 
   if(!departureDateIsValid()) {
	 result = false;
   }
 
 if(isReturnDateRequired()) {
  if(!returnDateIsValid()) {	 
   result = false;
  }
 }
 
 if($("#groupID").val() == '18') {
  if(!$('#addon_1').attr('checked') && !$('#addon_2').attr('checked') && !$('#addon_3').attr('checked')) {
   $('<label class="error">Please select a option</label>').appendTo($('#errorMsgContainer')); 
   result = false;
  }
 } 
 return result;
}

function dateCompare(date1,date2) {	
 var result = 0;	
 if(Date.parse(date1) < Date.parse(date2)){
  result = -1;							   
 }
 else if(Date.parse(date1) == Date.parse(date2)){
  result = 0;							   
 }
 else if(Date.parse(date1) > Date.parse(date2)){
  result = 1;							   
 }  
 return result;
}

function dateDiff(date1,date2) { 
 var diff = Math.ceil((date2.getTime()-date1.getTime()))/(1000*60*60*24);
 return diff;
}
