﻿
function getResearchDestinations(controlName,selectedCode){$("#"+controlName+"_destination_dropdown").removeOption(/./);$("#"+controlName+"_destination_dropdown").addOption("","Select Destination..");$("#"+controlName+"_destination_dropdown").ajaxAddOption2("/researchhierarchydropdowns/jsonhierarchy/","","",function(){$("#"+controlName+"_destination_dropdown").selectOptions(selectedCode);setSearchByNameDestination(controlName)},null,"D");$("#"+controlName+"_destination_dropdown").removeOption(/./);}
function getResearchRegions(controlName,code,selectedCode){$("#"+controlName+"_region_dropdown").removeOption(/./);$("#"+controlName+"_region_dropdown").addOption("","Any");$("#"+controlName+"_region_dropdown").ajaxAddOption2("/researchhierarchydropdowns/jsonhierarchy/"+code.toLowerCase(),"","",function(){$("#"+controlName+"_region_dropdown").selectOptions(selectedCode);setSearchByNameDestination(controlName)},null,"G");$("#"+controlName+"_resort_dropdown").removeOption(/./);}
function getResearchResorts(controlName,code,selectedCode){$("#"+controlName+"_resort_dropdown").removeOption(/./);$("#"+controlName+"_resort_dropdown").addOption("","Any");$("#"+controlName+"_resort_dropdown").ajaxAddOption2("/researchhierarchydropdowns/jsonhierarchy/"+code.substring(0,3).toLowerCase()+"/"+code.toLowerCase(),"","",function(){$("#"+controlName+"_resort_dropdown").selectOptions(selectedCode);setSearchByNameDestination(controlName)},null,"R");}
function changeResearchResort(controlName){setSearchByNameDestination(controlName);}
function goToResearchPath(controlName,urlPrefix)
{var destination=$('#'+controlName+'_destination_dropdown :selected').attr('id');var region=$('#'+controlName+'_region_dropdown :selected').attr('id');var resort=$('#'+controlName+'_resort_dropdown :selected').attr('id');var URL=urlPrefix+"/";URL+=destination;if(region!="")
{URL+="/";URL+=region;if(resort!=""&&resort!=undefined)
{URL+="/";URL+=resort;}}
window.location=URL;}
$.fn.ajaxAddOption2=function(url,params,select,fn,args,level){if(typeof(url)!="string")return this;if(typeof(params)!="object")params={};if(typeof(select)!="boolean")select=true;this.each(function(){var el=this;$.getJSON(url,params,function(r){for(var i in r){var option=document.createElement("option");option.value=i;if(r[i]){switch(level){case"D":option.text=r[i].Destination.Name;option.id=r[i].Destination.NameUrl;break;case"G":option.text=r[i].Region.Name;option.id=r[i].Region.NameUrl;break;case"R":option.text=r[i].Resort.Name;option.id=r[i].Resort.NameUrl;break;}}
regions=el;var o=regions.options;var oL=o.length;for(i=0;i<oL;i++){if(o[i].value==option.value){r=true;break;}}
if(i<oL&&!r)i=oL;regions.options[i]=option;}
if(typeof fn=="function"){if(typeof args=="object"&&args!=null){fn.apply(el,args);}
else{fn.call(el);}}});});return this;};function setSearchByNameDestination(controlName){var destCode=$('#'+controlName+'_destination_dropdown :selected').val();if(destCode==undefined||destCode.Length<2){$("#"+controlName+"_namefield_label .destinationSelected").hide();$("#"+controlName+"_namefield_label .noDestinationSelected").show();}else{$("#"+controlName+"_namefield_label .noDestinationSelected").hide();$("#"+controlName+"_namefield_label .searchDestinationName").html(" "+getLowestLevelText(controlName));$("#"+controlName+"_namefield_label .destinationSelected").show();}}
function getLowestLevelText(controlName){var inTxt=$('#'+controlName+'_resort_dropdown :selected').text();if(inTxt.length<1||inTxt=='Any'){inTxt=$('#'+controlName+'_region_dropdown :selected').text();}
if(inTxt.length<1||inTxt=='Any'){inTxt=$('#'+controlName+'_destination_dropdown :selected').text();}
return inTxt;}
function searchForAccomName(controlName,urlPrefix)
{var nameFragment=$('#'+controlName+'_namefield').val();var destination=$('#'+controlName+'_destination_dropdown :selected').val();var region=$('#'+controlName+'_region_dropdown :selected').val();var resort=$('#'+controlName+'_resort_dropdown :selected').val();var inTxt=getLowestLevelText(controlName);if(destination.length<1||destination==undefined){accomNameNoDestinationError();return false;}
if(nameFragment.length<3){accomNameTooFewCharsError();return false;}
$('#'+controlName+'_name_search_results tr.searchResultRow').remove();$("#"+controlName+"_loader_image").show();var ajaxUrl="/researchhierarchydropdowns/JsonSearchCentreName/"+encodeURI(nameFragment)+"/";ajaxUrl+=destination;if(region!="")
{ajaxUrl+="/";ajaxUrl+=region;if(resort!=""&&resort!=undefined)
{ajaxUrl+="/";ajaxUrl+=resort;}}
$.getJSON(ajaxUrl,function(data){var counter=0;$("#"+controlName+"_no_results").hide();$("#"+controlName+"_loader_image").hide();$('#'+controlName+'_name_search_results tr.searchResultRow').remove();$.each(data,function(index,value){counter++;var newUrl=urlPrefix+"/";newUrl+=value.Destination.NameUrl+"/";newUrl+=value.Region.NameUrl+"/";newUrl+=value.Resort.NameUrl+"/";newUrl+=value.Centre.NameUrl;newUrl=newUrl.replace('\'','\\\'');var newRow=$('#'+controlName+'_name_search_results tr.templateRow').clone().removeClass('templateRow').addClass('searchResultRow');$(newRow).find('.searchname_hotelNameCol').html('<a href="" onclick="previewAccom(\''+controlName+'\', \''+value.Centre.Code+'\', \''+newUrl+'\'); return false;">'+highlightNameFragment(value.Centre.Name,nameFragment)+'</a>');$(newRow).find('.searchname_destinationCol').html(value.Destination.Name);$(newRow).find('.searchname_regionCol').html(value.Region.Name);$(newRow).find('.searchname_resortCol').html(value.Resort.Name);$(newRow).filter('.centreDetailsRow').attr('id',controlName+'_previewCentreRow_'+value.Centre.Code);$(newRow).find('.centreDetailsContainer').attr('id',controlName+'_previewCentreDetails_'+value.Centre.Code);$('#'+controlName+'_name_search_results tr.templateRow:first').before($(newRow));});if(counter==0){$("#"+controlName+"_no_results .in").html(inTxt);$("#"+controlName+"_no_results .for").html(nameFragment);$("#"+controlName+"_no_results").show();}});}
function previewAccom(controlName,accomCode,url){if($('#'+controlName+'_previewCentreRow_'+accomCode).hasClass('dataRetrieved')){$('#'+controlName+'_previewCentreRow_'+accomCode).toggle();}else{if($("#"+controlName+'_previewCentreLoader_'+accomCode).length==0){$("#"+controlName+"_loader_image").clone().attr('id',controlName+'_previewCentreLoader_'+accomCode).show().appendTo('#'+controlName+'_previewCentreDetails_'+accomCode);}
$('#'+controlName+'_previewCentreRow_'+accomCode).show();if(accomCode.length==4){var ajaxUrl="/researchhierarchydropdowns/JsonCentrePreview/"+encodeURI(accomCode);$.getJSON(ajaxUrl,function(data){$('#'+controlName+'_previewCentreRow_'+accomCode).addClass('dataRetrieved')
$('#'+controlName+'_previewCentreDetails_'+accomCode).html('<img src="'+previewImgUrl(data.FirstImage)+'" /><p>'+formatDescription(data.Description)+'</p><p class="moredetails"><a href="'+url+'">'+getMoreDetailsLink()+'</a></p><div class="clear"></div>');});}}}
function formatDescription(desc){if(desc.length>=250){desc=desc.substring(0,247);desc+='...';}
desc.replace('\n','<br />');return desc;}
function highlightNameFragment(name,fragment){var i=name.toLowerCase().indexOf(fragment.toLowerCase());if(i==-1)return name;var str=name.substr(0,i);str+='<span class="nameFragmentHighlight">';str+=name.substr(i,fragment.length);str+='</span>';return str+highlightNameFragment(name.substr(i+fragment.length),fragment);}
