WebResources = Array();
WebResources.all_beaches = "Strände {0:s} <span style=\"font-size: 16px;\">(in alphabetischer Reihenfolge)</span>";
WebResources.all_beaches_unfold = "Alle Strände anzeigen";
WebResources.bookmark_title = "Expedia.de Strand-Inspirator - {1:s}";
WebResources.breadcrumb_details_hint = "Klicken Sie auf die Miniaturbilder unterhalb des Bildes zur Vergrößerung";
WebResources.breadcrumb_overview = "Übersicht";
WebResources.breadcrumb_regionselect = "Sie können direkt eine Region auf einer Karte anklicken";
WebResources.breadcrumb_start = "Start";
WebResources.help_leisure_content = "Freizeitangebot beinhaltet z.B. Aquapark, Beachclub, Spielplatz";
WebResources.help_leisure_title = "Freizeitangebot";
WebResources.info_show_details = "Details anzeigen";
WebResources.info_size = "Größe ca.";
WebResources.info_visitors = "Gäste";
WebResources.map_info_show_details = "Details anzeigen";
WebResources.map_info_size = "Größe ca.";
WebResources.map_info_visitors = "Gäste";
WebResources.map_label_missing_data = "Demnächst noch mehr Traumstrände in:";
WebResources.result_beaches_at_region_plural = "{0:d} Strände {1:s}";
WebResources.result_beaches_at_region_singular = "{0:d} Strand {1:s}";
WebResources.result_details = "Details";
WebResources.result_more_beaches = "Weitere Strände";
WebResources.result_page = "Seite:";
WebResources.result_total_beaches_plural = "{0:d} Strände gefunden";
WebResources.result_total_beaches_singular = "{0:d} Strand gefunden";
WebResources.all_beaches_title_link_holiday = "Urlaub {1:s}";
WebResources.all_beaches_title_link_hotels = "Hotels {1:s}";
WebResources.all_beaches_title_link_lastminute = "Last Minute Angebote {0:s}";
WebResources.all_beaches_title_link_rentacar = "Mietwagen {1:s}";
WebResources.all_beaches_link_hotels_PMI = "http://www.expedia.de/katalog/hotels/europa/spanien/mallorca/default.aspx";
WebResources.all_beaches_link_hotels_AYT = "http://www.expedia.de/katalog/hotels/europa/tuerkei/antalya/default.aspx";
WebResources.all_beaches_link_hotels_HRG = "http://www.expedia.de/katalog/hotels/aegypten/hurghada/default.aspx";
WebResources.all_beaches_link_hotels_RHO = "http://www.expedia.de/katalog/hotels/europa/griechenland/rhodos/default.aspx";
WebResources.all_beaches_link_hotels_POP = "http://www.expedia.de/katalog/hotels/karibik/dominikanische-republik/default.aspx";
WebResources.all_beaches_link_hotels_MRU = "http://www.expedia.de/katalog/hotels/mauritius/default.aspx";
WebResources.all_beaches_link_lastminute_PMI = "http://www.expedia.de/katalog/lastminute-reisen/europa/balearen/mallorca/default.aspx";
WebResources.all_beaches_link_lastminute_AYT = "http://www.expedia.de/katalog/lastminute-reisen/europa/tuerkei/antalya-belek/default.aspx";
WebResources.all_beaches_link_lastminute_HRG = "http://www.expedia.de/katalog/lastminute-reisen/afrika/aegypten/hurghada-safaga/default.aspx";
WebResources.all_beaches_link_lastminute_LPA = "http://www.expedia.de/katalog/lastminute-reisen/europa/kanaren/gran-canaria/default.aspx";
WebResources.all_beaches_link_lastminute_MIR = "http://www.expedia.de/katalog/lastminute-reisen/afrika/tunesien/monastir/default.aspx";
WebResources.all_beaches_link_lastminute_FUE = "http://www.expedia.de/katalog/lastminute-reisen/europa/kanaren/fuerteventura/default.aspx";
WebResources.all_beaches_link_lastminute_TSF = "http://www.expedia.de/katalog/lastminute-reisen/europa/kanaren/teneriffa/default.aspx";
WebResources.all_beaches_link_lastminute_HER = "http://www.expedia.de/katalog/lastminute-reisen/europa/griechische-inseln/kreta/default.aspx";
WebResources.all_beaches_link_lastminute_RHO = "http://www.expedia.de/katalog/lastminute-reisen/europa/griechische-inseln/rhodos/default.aspx";
WebResources.all_beaches_link_lastminute_POP = "http://www.expedia.de/katalog/lastminute-reisen/karibik/dominikanische-republik/default.aspx";
WebResources.all_beaches_link_lastminute_MRU = "http://www.expedia.de/katalog/lastminute-reisen/afrika/mauritius/default.aspx";
WebResources.all_beaches_link_holiday_PMI = "http://www.expedia.de/katalog/pauschalreisen/europa/balearen/mallorca/default.aspx";
WebResources.all_beaches_link_holiday_AYT = "http://www.expedia.de/katalog/pauschalreisen/europa/tuerkei/antalya-belek/default.aspx";
WebResources.all_beaches_link_holiday_HRG = "http://www.expedia.de/katalog/pauschalreisen/afrika/aegypten/hurghada-safaga/default.aspx";
WebResources.all_beaches_link_holiday_LPA = "http://www.expedia.de/katalog/pauschalreisen/europa/kanaren/gran-canaria/default.aspx";
WebResources.all_beaches_link_holiday_MIR = "http://www.expedia.de/katalog/pauschalreisen/afrika/tunesien/monastir/default.aspx";
WebResources.all_beaches_link_holiday_FUE = "http://www.expedia.de/katalog/pauschalreisen/europa/kanaren/fuerteventura/default.aspx";
WebResources.all_beaches_link_holiday_TSF = "http://www.expedia.de/katalog/pauschalreisen/europa/kanaren/teneriffa/default.aspx";
WebResources.all_beaches_link_holiday_HER = "http://www.expedia.de/katalog/pauschalreisen/europa/griechische-inseln/kreta/default.aspx";
WebResources.all_beaches_link_holiday_RHO = "http://www.expedia.de/katalog/pauschalreisen/europa/griechische-inseln/rhodos/default.aspx";
WebResources.all_beaches_link_holiday_POP = "http://www.expedia.de/katalog/pauschalreisen/karibik/dominikanische-republik/default.aspx";
WebResources.all_beaches_link_holiday_MRU = "http://www.expedia.de/katalog/pauschalreisen/afrika/mauritius/default.aspx";
WebResources.all_beaches_link_rentacar_PMI = "http://www.expedia.de/katalog/mietwagen/spanien/palma-de-mallorca/default.aspx";
WebResources.all_beaches_link_rentacar_AYT = "http://www.expedia.de/katalog/mietwagen/tuerkei/antalya/default.aspx";
WebResources.all_beaches_link_rentacar_LPA = "http://www.expedia.de/katalog/mietwagen/spanien/las-palmas/default.aspx";
WebResources.all_beaches_link_rentacar_MIR = "http://www.expedia.de/katalog/mietwagen/tunesien/monastir/default.aspx";
WebResources.all_beaches_link_rentacar_FUE = "http://www.expedia.de/katalog/mietwagen/spanien/fuerteventura/default.aspx";
WebResources.all_beaches_link_rentacar_TSF = "http://www.expedia.de/katalog/mietwagen/spanien/teneriffa/default.aspx";
WebResources.all_beaches_link_rentacar_HER = "http://www.expedia.de/katalog/mietwagen/griechenland/heraklion/default.aspx";
WebResources.all_beaches_link_rentacar_RHO = "http://www.expedia.de/katalog/mietwagen/griechenland/rhodos/default.aspx";
WebResources.all_beaches_link_rentacar_MRU = "http://www.expedia.de/katalog/mietwagen/mauritius/default.aspx";
WebResources.result_most_wanted = "Top-Strände unserer Kunden";
WebResources.map_legend_matching = "Strand, der Ihren Kriterien entspricht";
WebResources.map_legend_nonmatching = "Strand, der Ihren Kriterien nicht entspricht";
WebResources.map_legend_temperatures = "Durchs. Temperaturen";
WebResources.result_beaches_at_region_singular_POP = "1 Strand Dom. Rep.";
WebResources.help_blue_flag_content = "Ausgezeichnet mit z.B. der \"Blauen Flagge\".";
WebResources.help_blue_flag_title = "Wasserqualität";
WebResources.all_beaches_fold = "Strände ausblenden";

var NUDE=1<<0;var BLUE_FLAG=1<<1;var LIFE_GUARD=1<<2;var DECK_CHAIR=1<<3;var SUNSHADE=1<<4;var RESTAURANT=1<<5;var BEACH_BAR=1<<6;var KIOSK=1<<7;var PUBLIC_TOILET=1<<8;var HANDICAPPED=1<<9;var AQUAPARK=1<<10;var PUBLIC_BATHS=1<<11;var BEACHCLUB=1<<12;var PLAYGROUND=1<<13;var VEG_PALMS=1<<14;var VEG_PINES=1<<15;var VEG_BUSHES=1<<16;var VEG_NONE=1<<17;var CAR_PARK=1<<18;var CAR_PARK_FEE=1<<19;var PUBLIC_TRANSPORT=1<<20;var FOOTPATH=1<<21;var WATER_SPORTS=1<<22;var BEACH_SPORTS=1<<23;mkNode=function(tag,args){var node=document.createElement(tag);if(args==undefined)
args={};if(args.val!=undefined)
node.appendChild(document.createTextNode(args.val));if(args.iHTML!=undefined)
node.innerHTML=args.iHTML;if(args.styleClass!=undefined)
node.className=args.styleClass;if(args.width!=undefined)
node.width=args.width;if(args.height!=undefined)
node.height=args.height;if(args.border!=undefined)
node.border=args.border;if(args.href!=undefined)
node.href=args.href;if(args.title!=undefined)
node.title=args.title;if(args.colspan!=undefined)
node.colSpan=args.colspan;if(args.rowspan!=undefined)
node.rowSpan=args.rowspan;if(args.src!=undefined){node.src=args.src;node.alt=args.alt!=undefined?args.alt:"";}
for(var s in args.styles)
node.style[s]=args.styles[s];if(args.id!=undefined)
node.id=args.id;if(args.parent!=undefined)
args.parent.appendChild(node);return node;}
mkSpacer=function(w,h){var spacer=document.createElement("img");spacer.src=main.applicationPath+"/images/spacer.gif";spacer.style.width=w?w+"px":"1px";spacer.style.height=h?h+"px":"1px";return spacer;}
shorten=function(str,len){if(str.length>(len+2)){return str.substring(0,len)+"..";}
return str;}
clearNode=function(node){if(!node||!node.childNodes)
return;while(node.childNodes.length>0)
node.removeChild(node.childNodes[0]);}
sprintf=function()
{if(arguments.length==0)
return null;var format=arguments[0];for(var i=1;i<arguments.length;i++)
{var e=new RegExp("\\{"+(i-1)+":.\\}",'gm');format=format.replace(e,arguments[i]);}
return format;}
function inherit(subclass,superclass){var c=function(){};c.prototype=superclass.prototype;subclass.prototype=new c();}
function beachNameSort(a,b){s1=a.Name.toLowerCase();s2=b.Name.toLowerCase();if(s1>s2)
return 1;if(s1<s2)
return-1;return 0}
function hideNode(node){node.style.visibility="hidden";node.style.display="none";}
function showNode(node){node.style.visibility="visible";node.style.display="block";}
function getPos(o){var x=y=0;if(o.offsetParent){x=o.offsetLeft
y=o.offsetTop
while(o=o.offsetParent){x+=o.offsetLeft
y+=o.offsetTop}}
return[x,y];}
function mkCallBack(obj,method){var params=Array();for(var i=0;i<arguments.length-2;i++){params[i]=arguments[i+2];}
return function(e){method.apply(obj,[e].concat(params))};}
var globalEvents=Array();function addEvent(node,evt,callback){if(node==undefined){}
if(node.addEventListener){node.addEventListener(evt,callback,false);}else{node.attachEvent("on"+evt,callback);}
globalEvents.push([node,evt,callback]);}
function cleanUp(){for(var i=0;i<globalEvents.length;i++){var eDat=globalEvents[i];var node=eDat[0];var evt=eDat[1];var cb=eDat[2];if(node.removeEventListener){node.removeEventListener(evt,cb,false);}else{node.detachEvent("on"+evt,cb);}}}
var dm_prefix="AAdm_";function dm_createDataManager(name,service,applicationPath,regionID,beachID,searchCriteria,page){window[dm_prefix+name]=new DataManager(name,service,applicationPath,regionID,beachID,searchCriteria,page);}
function dm_getDataManager(name){return window[dm_prefix+name];}
function NamedValue(id,name){this.ID=id;this.Name=name;this.toString=function(){return this.Name;}}
function DataManager(name,service,applicationPath,regionID,beachID,searchCriteria,page){main=this;this.name=name;this.widgets=Array();this.listeners=Array();this.criteria=Array();this.baseURL=document.location.href;this.initialRegionID=regionID;this.initialBeachID=beachID;this.initialSearchCriteria=searchCriteria;this.applicationPath=applicationPath;this.page=page;this.autoUpdate=true;this.regions={};this.beaches={};this.beachConditions={};this.beachConditionsGroups={};this.beachVisitors={};this.beachVisitorsGroups={};this.beachTypes={};this.beachAccesses={};this.beachSandColors={};this.beachVillageNames={};this.service=service;this.criteriaValues=Array();this.criteriaValues["nude_allowed"]=0;this.criteriaValues["palm_beach"]=1;this.criteriaValues["toilets"]=2;this.criteriaValues["car_park"]=3;this.criteriaValues["handicapped"]=4;this.criteriaValues["blue_flag"]=5;this.criteriaValues["access_flat"]=6;this.criteriaValues["calm_beach"]=7;this.criteriaValues["water_beach_sports"]=8;this.criteriaValues["gastronomy"]=9;this.criteriaValues["leisure"]=10;this.criteriaValues["chairs_shades"]=11;this.criteriaBits=12;this.criteriaConditionBits=3;this.criteriaVisitorBits=3;this.criteriaVillageBits=9;this.visibleResultBeaches=[];this.currentResultPage=1;this.regExps={"A":/[Á]/g,"a":/[áàâ]/g,"ae":/[ä]/g,"C":/[Ç]/g,"c":/[ç]/g,"e":/[éèê]/g,"i":/[í]/g,"n":/[ñ]/g,"Oe":/[Ö]/g,"o":/[óò]/g,"oe":/[ö]/g,"ue":/[ü]/g,"u":/[ú]/g,"_":/[/&\s]/g,"'":/[´’]/g,"":/\./g}
this.bodyNode=document.getElementsByTagName("body")[0];this.init();}
DataManager.prototype.init=function(){this.service.set_defaultSucceededCallback(mkCallBack(this,DataManager.prototype.onLoad));var criteria=this.initialSearchCriteria;var region=this.initialRegionID;this.criteria=this.calcCriteria(criteria);this.criteria["region"]=region;this.criteria["beach_condition"]=this.calcCondition(criteria);this.criteria["beach_visitors"]=this.calcVisitors(criteria);this.criteria["beach_village"]=this.calcVillage(criteria);this.currentHash=this.calcHash();this.tracker=new Tracker(this);}
DataManager.prototype.checkAnchor=function(force){var hash=this.getHash();if(hash!=this.currentHash||(typeof(force)=="boolean"&&force==true)){var parts=hash.split(",");var badHash=false;var region=parts[0];if(this.regions[region]==undefined){badHash=true;region=0;}
var newCriteria=parts[1];var pageNum=parts[2];if(pageNum!=this.currentResultPage){this.widgets["leftpart"].preSelectPage(pageNum);this.currentResultPage=pageNum;}
if(region==this.criteria["region"]&&newCriteria==this.calcSearchCriteria()){this.updateHash();return;}
var criteriaData=this.calcCriteria(newCriteria);for(var critKey in this.criteriaValues){this.setCriterion(critKey,criteriaData[critKey]==true,false);}
var condition=this.calcCondition(newCriteria);if(this.beachConditions[condition]>0&&(this.beachConditions[condition]==undefined)){badHash=true;condition=0;}
var visitors=this.calcVisitors(newCriteria);if(this.beachVisitors[visitors]>0&&(this.beachVisitors[visitors]==undefined)){badHash=true;visitors=0;}
var village=this.calcVillage(newCriteria);if(this.beachVillageNames[village]>0&&(this.beachVillageNames[village]==undefined)){badHash=true;village=0;}
this.setCriterion("beach_condition",condition,false);this.setCriterion("beach_visitors",visitors,false);this.setCriterion("beach_village",village,false);this.setCriterion("region",region,false);if(badHash){this.updateHash();}
if(!force)
this.getResultData();}}
DataManager.prototype.getBaseURL=function(){var url=document.location.href;var sepIndex=url.indexOf("#");if(sepIndex>-1)
url=url.substring(0,sepIndex);return url;}
DataManager.prototype.getHash=function(){var url=document.location.href;var sepIndex=url.indexOf("#");if(sepIndex>-1){var hash=url.substring(sepIndex+1);if(hash.match(/[0-9]+,[0-9]+,[0-9]+/))
return hash;return this.initialRegionID+","+this.initialSearchCriteria+","+this.currentResultPage;}else{return this.initialRegionID+","+this.initialSearchCriteria+","+this.currentResultPage;}
return null;}
DataManager.prototype.calcHash=function(){var regionID=this.criteria["region"];if(regionID==undefined)
regionID=0;var searchCriteria=this.calcSearchCriteria();var hash=regionID+","+searchCriteria+","+this.currentResultPage;return hash;}
DataManager.prototype.updateHash=function(){this.currentHash=this.calcHash();document.location.href=this.getBaseURL()+"#"+this.currentHash;}
DataManager.prototype.onResultPageSelected=function(beachIDs,pageNumber){if(beachIDs!=null){this.visibleResultBeaches={};for(var i=0;i<beachIDs.length;i++){this.visibleResultBeaches[beachIDs[i]]=i;}
var maps=this.widgets["dmaps"];maps.checkIndizesVisible();}
if(this.currentResultPage!=pageNumber){this.currentResultPage=pageNumber;this.updateHash();}}
DataManager.prototype.calcCriteria=function(searchCriteria){var criteria=Array();for(var c in this.criteriaValues){var bitVal=1<<this.criteriaValues[c];if((searchCriteria&bitVal)==bitVal)
criteria[c]=true;}
return criteria;}
DataManager.prototype.calcCondition=function(searchCriteria){return(searchCriteria>>this.criteriaBits)&((1<<this.criteriaConditionBits)-1);}
DataManager.prototype.calcVisitors=function(searchCriteria){return(searchCriteria>>(this.criteriaBits+this.criteriaConditionBits))&((1<<this.criteriaVisitorBits)-1);}
DataManager.prototype.calcVillage=function(searchCriteria){return(searchCriteria>>(this.criteriaBits+this.criteriaConditionBits+this.criteriaVisitorBits))&((1<<this.criteriaVillageBits)-1);}
DataManager.prototype.parseStaticData=function(result){Str=function(val){this.val=val;this.toString=function(){return this.val}};for(var key in result.Regions){this.regions[key]={"ID":key,"Name":new Str(result.Regions[key].N),"Code":result.Regions[key].c,"PosLong":parseFloat(result.Regions[key].p[0]),"PosLat":parseFloat(result.Regions[key].p[1]),"AirTemp":parseFloat(result.Regions[key].p[2]),"WaterTemp":parseFloat(result.Regions[key].p[3]),"Beaches":{},"BeachCount":0}}
var transformNamedValues=function(srcName){var src=result[srcName];var destName=srcName.charAt(0).toLowerCase()+srcName.substr(1);var dest=main[destName];for(var key in src){var iKey=parseInt(key);dest[key]=new NamedValue(iKey,src[key]);}}
transformNamedValues("BeachAccesses");transformNamedValues("BeachConditions");transformNamedValues("BeachSandColors");transformNamedValues("BeachTypes");transformNamedValues("BeachVisitors");transformNamedValues("BeachVillageNames");for(var key in result.Beaches){var data=result.Beaches[key];key=parseInt(key);var beach={"ID":key,"Name":data.N,"PosLong":data.p[0],"PosLat":data.p[1],"BeachAccess":this.beachAccesses[parseInt(data.r[0])],"BeachCondition":this.beachConditions[parseInt(data.r[1])],"BeachSandColor":this.beachSandColors[parseInt(data.r[2])],"BeachType":this.beachTypes[parseInt(data.r[3])],"BeachVisitors":this.beachVisitors[parseInt(data.r[4])],"BeachVillageName":this.beachVillageNames[parseInt(data.r[5])],"RegionID":parseInt(data.r[6]),"Picture":data.P+"/"+data.i,"Length":parseInt(data.s[0]),"Width":parseInt(data.s[1]),"Region":this.regions[parseInt(data.r[6])],"FlagField":parseInt(data.r[7]),"POI":data.P};this.beaches[key]=beach;this.regions[beach.RegionID].Beaches[beach.ID]=beach;this.regions[beach.RegionID].BeachCount++;if(beach.BeachVillageName.Beaches==undefined)
beach.BeachVillageName.Beaches={};beach.BeachVillageName.Beaches[beach.ID]=beach;}
for(var villageID in this.beachVillageNames){var villageName=this.beachVillageNames[villageID];for(var beachID in villageName.Beaches){var beach=villageName.Beaches[beachID];if(beach.Region.BeachVillageNames==undefined)
beach.Region.BeachVillageNames={};beach.Region.BeachVillageNames[villageID]=villageName;}}
this.beachConditionsGroups=result.BeachConditionsGroups;for(var groupID in this.beachConditionsGroups){var group=this.beachConditionsGroups[groupID];for(var i=0;i<group.Conditions.length;i++){var conditionID=group.Conditions[i];this.beachConditions[conditionID].Group=group.ID;}}
this.beachVisitorsGroups=result.BeachVisitorsGroups;for(var groupID in this.beachVisitorsGroups){var group=this.beachVisitorsGroups[groupID];for(var i=0;i<group.Visitors.length;i++){var visitorsID=group.Visitors[i];this.beachVisitors[visitorsID].Group=group.ID;}}}
DataManager.prototype.getCurrentBeach=function(){if(this.initialBeachID==0)
return null;return this.beaches[this.initialBeachID];}
DataManager.prototype.getCurrentRegion=function(){if(this.criteria["region"]>0)
return this.regions[this.criteria["region"]];return{ID:0,Code:"NON",Name:""};}
DataManager.prototype.getBeachLink=function(beach){var url=this.applicationPath;var region=this.regions[beach.RegionID];url+="/"+this.cleanString(region.Name);url+="/"+this.cleanString(beach.BeachVillageName);url+="/"+this.cleanString(beach.Name);url+="/"+this.calcSearchCriteria();url+="/details.aspx";return url;}
DataManager.prototype.getBeachImage=function(beach){var url=this.applicationPath+"/images/beaches";var region=this.regions[beach.RegionID];url+="/"+this.cleanString(region.Name);url+="/"+beach.Picture;url+="-res-small.jpg";return url;}
DataManager.prototype.getRegionLink=function(region){var url=this.applicationPath;var criteria=this.autoUpdate?this.calcSearchCriteria():this.initialSearchCriteria;url+="/"+this.cleanString(region.Name);url+="/"+criteria;url+="/search.aspx";return url;}
DataManager.prototype.getResultURL=function(region){var url=this.applicationPath;if(region.ID>0)
url+="/"+this.cleanString(region.Name);url+="/"+this.calcSearchCriteria();return url+"/search.aspx";}
DataManager.prototype.onLoad=function(result){if(result.dType=="QueryData"){resultData=result.Result;for(var key in resultData.BeachTextTeasers){var iKey=parseInt(key);this.beaches[iKey].BeachTextTeaser=resultData.BeachTextTeasers[key];}
if(!resultData.MostWanted)
resultData.BeachIDs=Array();else
resultData.BeachIDs=resultData.MostWantedBeachIDs;resultData.RegionResultsByRegionID={};for(var i=0;i<resultData.RegionResults.length;i++){var rRes=resultData.RegionResults[i];if(!resultData.MostWanted)
resultData.BeachIDs=resultData.BeachIDs.concat(rRes.BeachIDs);resultData.RegionResultsByRegionID[rRes.RegionID]=rRes;rRes.Beaches={};for(var j=0;j<rRes.BeachIDs.length;j++){var id=rRes.BeachIDs[j];var beach=this.beaches[id];rRes.Beaches[id]=beach;}}
resultData.Beaches={};for(var i=0;i<resultData.BeachIDs.length;i++){var id=resultData.BeachIDs[i];var beach=this.beaches[id];resultData.Beaches[id]=beach;}
this.notifyListeners(result.dType,resultData);}else if(result.dType=="StaticData"){this.parseStaticData(result);if(this.page=="search")
this.checkAnchor(true);this.notifyListeners(result.dType);if(this.page=="search")
this.anchorIntervall=setInterval(mkCallBack(this,DataManager.prototype.checkAnchor,false),300);if(this.page!="details")
this.getResultData(true);}else if(result.dType=="RegionBeaches"){this.regionBeaches[result.RegionID]=result;this.notifyListeners(result.dType,result.RegionID);}else if(result.dType=="BeachDetails"){this.beachDetails[result.BeachID]=result;this.notifyListeners(result.dType,result.BeachID);}
this.notifyListeners("Post"+result.dType);}
DataManager.prototype.setCriterion=function(criterion,value,fetch){this.criteria[criterion]=value;this.notifyListeners("CriterionChanged",criterion);if(this.autoUpdate&&fetch){this.currentResultPage=1;this.getResultData();}}
DataManager.prototype.addListener=function(listener){this.listeners.push(listener);}
DataManager.prototype.notifyListeners=function(dType,p1){for(var i=0;i<this.listeners.length;i++){this.listeners[i].update(dType,p1);}}
DataManager.prototype.calcSearchCriteria=function(){var criteriaValue=0;for(var c in this.criteria)
if(this.criteriaValues[c]!=undefined)
if(this.criteria[c])
criteriaValue=criteriaValue|(1<<this.criteriaValues[c]);criteriaValue=criteriaValue|(this.criteria["beach_condition"]<<this.criteriaBits);criteriaValue=criteriaValue|(this.criteria["beach_visitors"]<<(this.criteriaBits+this.criteriaConditionBits));criteriaValue=criteriaValue|(this.criteria["beach_village"]<<(this.criteriaBits+this.criteriaConditionBits+this.criteriaVisitorBits));return criteriaValue;}
DataManager.prototype.matchBeach=function(beach){if(this.criteria["region"]!=0)
if(this.criteria["region"]!=beach.RegionID)
return false;if(this.criteria["beach_condition"]!=0)
if(this.criteria["beach_condition"]!=beach.BeachCondition.Group)
return false;if(this.criteria["beach_visitors"]!=0)
if(this.criteria["beach_visitors"]!=beach.BeachVisitors.Group)
return false;for(var criterion in this.criteria){if((this.criteriaValues[criterion]==undefined)||(this.criteria[criterion]!=true))
continue;}
return true;}
DataManager.prototype.getResultData=function(omitHash){this.notifyListeners("PRE_QUERY");var regionID=this.criteria["region"];var searchCriteria=this.calcSearchCriteria();if(omitHash!=true)
this.updateHash();this.service.Query(regionID,searchCriteria);}
DataManager.prototype.getStaticData=function(){this.service.GetStaticData();}
DataManager.prototype.registerWidget=function(type,id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14){var instance=new type(this,id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14);this.widgets[id]=instance;return instance;}
DataManager.prototype.getWidget=function(id){return this.widgets[id];}
DataManager.prototype.cleanString=function(str){str=str.toString();for(var c in this.regExps)
str=str.replace(this.regExps[c],c);return str;}
DataManager.prototype.exit=function(){GUnload();cleanUp();}
function FormControl(dataManager,id){main=dataManager;this.id=id;this.domNode=$get(id);this.controls=Array();this.extendedCriteria=["toilets","deck_chairs","car_park","handicapped","water_beach_sports","gastronomy","leisure"];this.init();}
FormControl.prototype.init=function(){main.addListener(this);}
FormControl.prototype.submit=function(){main.tracker.trackForm(this,"submit");document.location.href=main.getResultURL(main.getCurrentRegion());}
FormControl.prototype.update=function(dType){}
FormControl.prototype.onCriterionChanged=function(criterion,value){main.setCriterion(criterion,value,true);}
FormControl.prototype.registerControl=function(type,id,p1,p2,p3,p4,p5,p6,p7,p8){this.controls[id]=main.registerWidget(type,id,this,p1,p2,p3,p4,p5,p6,p7,p8);}
FormControl.prototype.getControl=function(id){return this.controls[id];}
hide_search={"FlugTab":["dd_region","dd_village"],"HotelssTab":["dd_region","dd_village","dd_condition"]};hide_result={};hide_details={}
setDropDowns=function(key,what){var selects=document.getElementsByTagName("select");for(var i=0;i<window["hide_"+main.page][key].length;i++){var tID=window["hide_"+main.page][key][i];for(var j=0;j<selects.length;j++){var select=selects[j];if(select.id.indexOf(tID)==0)
select.style.visibility=what;}}}
sfHover=function(){}
if(window.attachEvent)
window.attachEvent("onload",sfHover);
function Tracker(dataManager){this.Land="DE";this.Projekt="bch";this.visitorsCodes={0:"non",1:"gem",2:"alt",3:"fam",4:"jgo"}
this.conditionCodes={0:"non",1:"kie",2:"lav",3:"saf",4:"sag",5:"ste"}
this.criteriaCodes={"nude_allowed":"k11","palm_beach":"k03","toilets":"k05","car_park":"k07","handicapped":"k10","access_flat":"k01","calm_beach":"k02","water_beach_sports":"k08","gastronomy":"k04","leisure":"k09","chairs_shades":"k06","blue_flag":"k12"}
this.init(dataManager);}
Tracker.prototype.init=function(dataManager){this.dm=dataManager;}
Tracker.prototype.track=function(eVar1,eVar2){switch(this.dm.page){case"search":s_pageName='Bch_Start';break;case"details":s_pageName='Bch_Detail';break;}
s_linkTrackEvents='None';s_linkType='o';s_linkName='Beachfinder';s_linkTrackVars="s_eVar1";if(eVar2!=undefined&&eVar2!=null){s_eVar1=eVar2;s_eVar11=eVar2;s_eVar12=eVar2;}else{s_eVar1=eVar1;s_eVar11="";}}
Tracker.prototype.buildParams=function(category,regionCode,beachCode,option){var params="";params+=this.Land+"_"+this.Projekt+"_";switch(this.dm.page){case"search":params+="010_";break;case"details":params+="020_";break;}
params+=category+"_";params+=regionCode+"_";if(beachCode==undefined||beachCode==null)
params+="S0000";else{while(beachCode.length<5)
beachCode="S0"+beachCode.substr(1);params+=beachCode;}
if(option!=undefined&&option!=null)
params+="_"+option;return params;}
Tracker.prototype.getCriteriaCode=function(){var res="";res+=this.conditionCodes[this.dm.criteria["beach_condition"]]+"_";res+=this.visitorsCodes[this.dm.criteria["beach_visitors"]];var selected=Array();for(var crit in this.dm.criteria){if(typeof(this.dm.criteria[crit])==typeof(true)&&this.dm.criteria[crit]==true){selected.push(crit);}}
if(selected.length==0)
return res;if(selected.length>3)
return res+"_k00";res+="_";for(var i=0;i<selected.length;i++){var key=selected[i];var val=this.criteriaCodes[key];if(val!=undefined)
res+=val;}
return res;}
Tracker.prototype.trackForm=function(form,e){var regionCode=this.dm.getCurrentRegion().Code;var vars=null;switch(e){case"criterionchange":case"submit":vars=this.buildParams("wzr",regionCode,null,this.getCriteriaCode());break;}
this.track(vars);}
Tracker.prototype.trackBreadcrumb=function(form,e){var regionCode=this.dm.getCurrentRegion().Code;var beachCode=this.dm.initialBeachID>0?this.dm.getCurrentBeach().POI:null;var option=null;switch(e){case"start":option="bc01";break;case"overview":option="bc02";break;case"region":option="bc03";break;case"village":option="bc04";break;}
this.track(this.buildParams("lnk",regionCode,beachCode,option));}
Tracker.prototype.trackMap=function(form,e,marker){var vars=null;switch(e){case"regionMarkerClicked":vars=this.buildParams("krt",marker.region.Code,null,this.getCriteriaCode());break;case"beachMarkerClicked":vars=this.buildParams("krt",marker.beach.Region.Code,marker.beach.POI,this.getCriteriaCode());break;case"beachMarkerDetailsClicked":vars=this.buildParams("pop",marker.beach.Region.Code,marker.beach.POI,this.getCriteriaCode());break;}
this.track(vars);}
Tracker.prototype.trackResult=function(form,e,target){var vars=null;switch(e){case"pagination":vars=this.buildParams("lnk",this.dm.getCurrentRegion().Code,null,"coun");break;case"regionresults":vars=this.buildParams("box",target.Code,null,this.getCriteriaCode());break;case"showBeach":vars=this.buildParams("box",target.Region.Code,target.POI,this.getCriteriaCode());break;}
this.track(vars);}
Tracker.prototype.trackAllBeaches=function(form,e,beach){this.track(this.buildParams("str",beach.Region.Code,beach.POI,this.getCriteriaCode()));}
Tracker.prototype.trackBackToStart=function(form){this.track(this.buildParams("lnk",this.dm.getCurrentRegion().Code,null,"home"));}
Tracker.prototype.trackFavouriteDestinations=function(form,e,region){this.track(this.buildParams("rzi",region.Code,null,this.getCriteriaCode()));}
Tracker.prototype.trackMedia=function(form,e,data){var beach=this.dm.getCurrentBeach();switch(e){case"showPicture":this.track(this.buildParams("lnk",beach.Region.Code,beach.POI,"pics"));break;case"showPano":this.track(this.buildParams("lnk",beach.Region.Code,beach.POI,"360p"));break;case"showMap":this.track(this.buildParams("lnk",beach.Region.Code,beach.POI,"smap"));break;}}
Tracker.prototype.trackHotelOffers=function(form,e,data){var beach=this.dm.getCurrentBeach();var params=this.buildParams("ang",beach.Region.Code,beach.POI,"h0"+data);this.track(null,params);}
Tracker.prototype.trackSendToAFriend=function(form){var beach=this.dm.getCurrentBeach();var params=this.buildParams("lnk",beach.Region.Code,beach.POI,"send");this.track(params);}
Tracker.prototype.trackBookmark=function(form){var beach=this.dm.getCurrentBeach();var params=this.buildParams("lnk",beach.Region.Code,beach.POI,"lese");this.track(params);}
Tracker.prototype.trackACar=function(form,option){var beach=this.dm.getCurrentBeach();var params=this.buildParams("ang",beach.Region.Code,beach.POI,option);this.track(null,params);}
Tracker.prototype.trackTravelOffers=function(form,e,data){var beach=this.dm.getCurrentBeach();var params=this.buildParams("ang",beach.Region.Code,beach.POI,"p0"+data);this.track(null,params);}
Tracker.prototype.getOfferTracking=function(option){var beach=this.dm.getCurrentBeach();return this.buildParams("ang",beach.Region.Code,beach.POI,option);}
function AllBeaches(dataManager,id){this.id=id;this.allVisible=true;this.minVisibleRows=3;this.domNode=$get(id);this.imgFold=main.applicationPath+"/images/btn-minus-blueOnblue.gif";this.imgUnfold=main.applicationPath+"/images/btn-plus-blueOnblue.gif";this.init();}
AllBeaches.prototype.init=function(){main.addListener(this);var tables=this.domNode.getElementsByTagName("table");if(tables.length==2){var titleTable=tables[0];var titleTDs=titleTable.getElementsByTagName("td");this.titleImageLink=titleTDs[1].getElementsByTagName("a")[0].getElementsByTagName("img")[0];this.titleLink=titleTDs[1].getElementsByTagName("a")[1];}}
AllBeaches.prototype.setAllVisible=function(state){var rows=this.domNode.getElementsByTagName("tr");for(var i=0;i<rows.length;i++){var row=rows[i];var num=parseInt(row.id.substr(this.id.length+5));if(num>=this.minVisibleRows){if(state){row.style.display=rows[0].style.display;}else{row.style.display="none";}}}
if(state){this.titleImageLink.src=this.imgFold;this.titleLink.innerHTML=WebResources.all_beaches_fold;}else{this.titleImageLink.src=this.imgUnfold;this.titleLink.innerHTML=WebResources.all_beaches_unfold;}
this.allVisible=state;}
AllBeaches.prototype.trackBeachClicked=function(e,beachID){main.tracker.trackAllBeaches(this,"beachclicked",main.beaches[beachID]);}
AllBeaches.prototype.onHeadlineClicked=function(){this.setAllVisible(!this.allVisible);}
AllBeaches.prototype.fixTracking=function(){var hrefs=this.domNode.getElementsByTagName("a");for(var i=0;i<hrefs.length;i++){var href=hrefs[i];if(!href.id||!href.id.startsWith("_"))
continue;var id=parseInt(href.id.substring(4));addEvent(href,"click",mkCallBack(this,AllBeaches.prototype.trackBeachClicked,id));}
if(main.getCurrentRegion().ID!=0){var headline=this.domNode.getElementsByTagName("table")[0];if(headline!=undefined){var links=headline.getElementsByTagName("a");var callback=mkCallBack(this,AllBeaches.prototype.onHeadlineClicked);for(var i=0;i<links.length;i++){var link=links[i];addEvent(link,"click",callback);}
this.setAllVisible(false);}}}
AllBeaches.prototype.mkBeachTable=function(region){var columns=4;var rows=Math.ceil(region.BeachCount/columns);var table=mkNode("table",{});var tBody=mkNode("tbody",{parent:table});var bList=Array();for(var bID in region.Beaches)
bList.push(region.Beaches[bID]);bList.sort(beachNameSort);for(var row=0;row<rows;row++)
{var tRow=mkNode("tr",{parent:tBody,id:this.id+"_row_"+row});for(var col=0;col<columns;col++)
{if(col>0)
{mkNode("td",{styleClass:"space",parent:tRow,iHTML:"&nbsp;"});}
if(col*rows+row<region.BeachCount)
{var beach=bList[col*rows+row];var url=main.applicationPath;url+="/"+main.cleanString(region.Name);url+="/"+main.cleanString(beach.BeachVillageName);url+="/"+main.cleanString(beach.Name);url+="/details.aspx";var td=mkNode("td",{styleClass:"dat",parent:tRow});mkNode("a",{href:url,parent:td,val:beach.Name,id:"_ab_"+beach.ID});}
else
mkNode("td",{styleClass:"dat",parent:tRow,iHTML:"&nbsp;"});}}
return table;}
AllBeaches.prototype.redraw=function(){var region=main.getCurrentRegion();clearNode(this.domNode);if(region.ID==0){return;}
var sepDiv=mkNode("div",{styleClass:"bfinder_i_u"});sepDiv.appendChild(mkSpacer());this.domNode.appendChild(sepDiv);var headLine=sprintf(WebResources.all_beaches,region.Name);var hTable=mkNode("table",{parent:this.domNode,cellspacing:"0",cellpadding:"0",styles:{width:"100%",margin:"0"}});var hTBody=mkNode("tbody",{parent:hTable});var hTR=mkNode("tr",{parent:hTBody});var hTD1=mkNode("td",{parent:hTR});mkNode("h2",{iHTML:headLine,parent:hTD1})
var hTD2=mkNode("td",{parent:hTR,styles:{textAlign:"right",paddingRight:"4px"}});var hTDa1=mkNode("a",{parent:hTD2,alt:""});this.titleImageLink=mkNode("img",{parent:hTDa1,alt:"",styles:{paddingRight:"4px",verticalAlign:"middle"},src:this.imgUnfold,border:"0",height:"16",width:"16"});this.titleLink=mkNode("a",{parent:hTD2,alt:"",styleClass:"ps_a",val:WebResources.all_beaches_unfold});this.domNode.appendChild(this.mkBeachTable(region));this.fixTracking();}
AllBeaches.prototype.update=function(dType,criterion){if(dType=="CriterionChanged"&&criterion=="region"){this.redraw();}else if(dType=="StaticData"){if(main.initialRegionID!=main.criteria["region"]){this.redraw();}else{this.fixTracking();}}}
function BackToStart(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
BackToStart.prototype.init=function(){this.addTracking();}
BackToStart.prototype.update=function(){}
BackToStart.prototype.onClick=function(e){main.tracker.trackBackToStart(this);}
BackToStart.prototype.addTracking=function(){var hrefs=this.domNode.getElementsByTagName("a");for(var i=0;i<hrefs.length;i++){var href=hrefs[i];var id=parseInt(href.id.substring(4));addEvent(href,"click",mkCallBack(this,BeachDetails.prototype.onClick));}}
function BeachDescription(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
BeachDescription.prototype.init=function(){this.addTracking();}
BeachDescription.prototype.onBookmark=function(e){var title=sprintf(WebResources.bookmark_title,main.getCurrentRegion().Name,main.getCurrentBeach().Name);if(window.sidebar){window.sidebar.addPanel(title,document.location.href,"");}else if(window.external){window.external.AddFavorite(document.location.href,title);}
else if(window.opera&&window.print){return true;}
main.tracker.trackBookmark(this,e);}
BeachDescription.prototype.onSendToAFriend=function(e){main.tracker.trackSendToAFriend(this,e);}
BeachDescription.prototype.addTracking=function(){var refs=$get('bmark',this.domNode).getElementsByTagName("a");for(var i=0;i<refs.length;i++)
addEvent(refs[i],"click",mkCallBack(this,BeachDescription.prototype.onBookmark));refs=$get('send',this.domNode).getElementsByTagName("a");for(var i=0;i<refs.length;i++)
addEvent(refs[i],"click",mkCallBack(this,BeachDescription.prototype.onSendToAFriend));}
function Breadcrumb(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
Breadcrumb.prototype.init=function(){main.addListener(this);this.addTracking();}
Breadcrumb.prototype.addTracking=function(){var self=this;var bc_start=$get("bc_start");if(bc_start)
addEvent(bc_start,"click",mkCallBack(this,Breadcrumb.prototype.onClick,"start"));var bc_overview=$get("bc_overview");if(bc_overview)
addEvent(bc_overview,"click",mkCallBack(this,Breadcrumb.prototype.onClick,"overview"));var bc_region=$get("bc_region");if(bc_region)
addEvent(bc_region,"click",mkCallBack(this,Breadcrumb.prototype.onClick,"region"));var bc_village=$get("bc_village");if(bc_village)
addEvent(bc_village,"click",mkCallBack(this,Breadcrumb.prototype.onClick,"village"));}
Breadcrumb.prototype.reRender=function(){switch(main.page){case"search":{clearNode(this.domNode);this.exit();if(main.criteria["region"]!=0){var startURL="javascript:main.setCriterion('region', 0, true);"
mkNode("a",{id:"bc_start",href:startURL,val:WebResources.breadcrumb_start,parent:this.domNode});this.domNode.appendChild(document.createTextNode(" > "));var region=main.regions[main.criteria["region"]];if(main.criteria["beach_village"]==0){mkNode("span",{val:region.Name,parent:this.domNode});}else{var regionURL="javascript:main.setCriterion('beach_village', 0, true);";mkNode("a",{id:"bc_region",href:regionURL,val:main.getCurrentRegion().Name,parent:this.domNode});this.domNode.appendChild(document.createTextNode(" > "));var village=main.beachVillageNames[main.criteria["beach_village"]];mkNode("span",{val:village.Name,parent:this.domNode});}}else if(main.criteria["beach_village"]!=0){var startURL="javascript:main.setCriterion('beach_village', 0, true);"
mkNode("a",{id:"bc_start",href:startURL,val:WebResources.breadcrumb_start,parent:this.domNode});this.domNode.appendChild(document.createTextNode(" > "));var village=main.beachVillageNames[main.criteria["beach_village"]];mkNode("span",{val:village.Name,parent:this.domNode});}
this.addTracking();break;}
case"details":{break;}}}
Breadcrumb.prototype.update=function(dType,criterion){if(dType=="CriterionChanged"&&(criterion=="region"||criterion=="beach_village")){this.reRender();}else if(dType="StaticData"){this.reRender();}}
Breadcrumb.prototype.exit=function(){var bc_start=$get("bc_start");if(bc_start)
bc_start.onclick="";var bc_overview=$get("bc_overview");if(bc_overview)
bc_overview.onclick="";var bc_region=$get("bc_region");if(bc_region)
bc_region.onclick="";var bc_region=$get("bc_village");if(bc_region)
bc_region.onclick="";}
Breadcrumb.prototype.onClick=function(e,w){main.tracker.trackBreadcrumb(this,w);}
function FavouriteDestinations(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
FavouriteDestinations.prototype.init=function(){this.fixTracking();}
FavouriteDestinations.prototype.trackRegionClicked=function(e,regionID){main.tracker.trackFavouriteDestinations(this,"regionclicked",main.regions[regionID]);}
FavouriteDestinations.prototype.fixTracking=function(){var hrefs=this.domNode.getElementsByTagName("a");for(var i=0;i<hrefs.length;i++){var href=hrefs[i];var id=parseInt(href.id.substring(4));addEvent(href,"click",mkCallBack(this,FavouriteDestinations.prototype.trackRegionClicked,id));}}
function HotelOffers(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
HotelOffers.prototype.init=function(){main.addListener(this);}
HotelOffers.prototype.trackOfferClicked=function(e,offerPos){main.tracker.trackHotelOffers(this,"offerclicked",offerPos);}
HotelOffers.prototype.update=function(dType){switch(dType){case"StaticData":this.fixTracking();break;}}
HotelOffers.prototype.fixTracking=function(){var hrefs=this.domNode.getElementsByTagName("a");for(var i=0;i<hrefs.length;i++){var href=hrefs[i];var pos=parseInt(href.id.substring(4));addEvent(href,"click",mkCallBack(this,HotelOffers.prototype.trackOfferClicked,pos));href.href+="&mcicid="+main.tracker.getOfferTracking("h0"+pos);}}
function MapView(dataManager,id){this.id=id;this.domNode=$get(id);this.map=null;this.home1=new GLatLng(37.370157,13.974609);this.imgMarker="/images/beachfinder_icon_palm.png";;this.imgMarkerGray="/images/beachfinder_icon_palm_g.png";;this.imgMarkerSmall="/images/beachfinder_icon_palm_s.png";this.imgMarkerSmallGray="/images/beachfinder_icon_palm_g_s.png";this.imgMarkerIndex=[];this.beachMarkerMinimalZoom=7;this.mode=0;this.currentRegion=0;this.regionMarkers={};this.visibleRegions={};this.init();}
MapView.prototype.init=function(){cW=new Image();cW.src=main.applicationPath+"/images/cursor/w.ico";cS=new Image();cS.src=main.applicationPath+"/images/cursor/start.ico";cE=new Image();cE.src=main.applicationPath+"/images/cursor/e.ico";for(var i=0;i<8;i++){this.imgMarkerIndex[i]="/images/marker"+(i+1)+".png";}
this.markerIcon=new GIcon(G_DEFAULT_ICON);this.markerIcon.image=main.applicationPath+this.imgMarker;this.markerIcon.iconSize=new GSize(30,34);this.markerIcon.iconAnchor=new GPoint(20,33);this.markerIcon.shadow=null;this.markerIcon.imageMap=null;this.markerIconGray=new GIcon(G_DEFAULT_ICON);this.markerIconGray.image=main.applicationPath+this.imgMarkerGray;this.markerIconGray.iconSize=new GSize(30,34);this.markerIconGray.iconAnchor=new GPoint(20,33);this.markerIconGray.shadow=null;this.markerIconGray.imageMap=null;this.smallMarkerIcon=new GIcon(G_DEFAULT_ICON);this.smallMarkerIcon.image=main.applicationPath+this.imgMarkerSmall;this.smallMarkerIcon.iconSize=new GSize(24,18);this.smallMarkerIcon.iconAnchor=new GPoint(14,17);this.smallMarkerIcon.shadow=null;this.smallMarkerIcon.imageMap=null;this.smallMarkerIconGray=new GIcon(G_DEFAULT_ICON);this.smallMarkerIconGray.image=main.applicationPath+this.imgMarkerSmallGray;this.smallMarkerIconGray.iconSize=new GSize(24,18);this.smallMarkerIconGray.iconAnchor=new GPoint(14,17);this.smallMarkerIconGray.shadow=null;this.smallMarkerIconGray.imageMap=null;this.initMaps();main.addListener(this);}
MapView.prototype.checkIndizesVisible=function(){this.map1.checkIndizesVisible();}
MapView.prototype.update=function(dType,p1){switch(dType){case"CriterionChanged":if(p1=="region"){this.showRegion(main.criteria["region"]!=0?main.regions[main.criteria["region"]]:null);}
break;case"StaticData":this.map1.addRegionMarkers();break;case"QueryData":this.queryData=p1;this.showRegion(p1.Region!=0?main.regions[p1.Region]:null);this.map1.setResult(p1);this.map1.checkRegionMarkersVisibility();break;}}
MapView.prototype.showRegion=function(region){if(this.currentRegion==region)
return;if(region!=null){this.setMode(1);var bounds=new GLatLngBounds();for(var beachID in region.Beaches){var beach=region.Beaches[beachID];bounds.extend(new GLatLng(beach.PosLat,beach.PosLong));}
var calcLevel=this.map1.gMap.getBoundsZoomLevel(bounds);if(region.AirTemp==0&&region.WaterTemp==0){this.legendTDAirTemp.innerHTML="n/a";this.legendTDWaterTemp.innerHTML="n/a";}else{this.legendTDAirTemp.innerHTML=(region.AirTemp|0)+"&deg;C";this.legendTDWaterTemp.innerHTML=(region.WaterTemp|0)+"&deg;C";}
this.map1.gMap.setZoom(calcLevel>7?calcLevel:7);this.map1.gMap.panTo(bounds.getCenter());this.map1.showOverview();}else{this.setMode(2);this.map1.gMap.setZoom(3);this.map1.gMap.panTo(this.home1);this.map1.hideOverview();}
this.currentRegion=region;}
MapView.prototype.clear=function(){while(this.domNode.childNodes.length>0)
this.domNode.removeChild(this.domNode.childNodes[0]);}
MapView.prototype.mkSpacer=function(w,h){var spacer=document.createElement("img");spacer.src=main.applicationPath+"/images/spacer.gif";spacer.style.width=w?w+"px":"1px";spacer.style.height=h?h+"px":"1px";return spacer;}
MapView.prototype.initMaps=function(){this.map1=new Map(this,"map1",this.domNode,this.home1,3,377,246,"/images/map-big-right.gif","/images/map-big-bottom.gif",false,true,false,true);this.legend=mkNode("table",{parent:this.domNode,styleClass:"legend"});var legendBody=mkNode("tbody",{parent:this.legend});var legendRow1=mkNode("tr",{parent:legendBody});var legendRow2=mkNode("tr",{parent:legendBody});var tdTempText=mkNode("td",{parent:legendRow1,colspan:4,val:WebResources.map_legend_temperatures,styles:{widthX:"33px",whiteSpace:"nowrap"}});var tdSunImg=mkNode("td",{parent:legendRow2,styles:{widthX:"33px"}});mkNode("img",{width:18,height:18,border:0,src:main.applicationPath+"/images/sun-OnBlue.gif",parent:tdSunImg});this.legendTDAirTemp=mkNode("td",{parent:legendRow2,styles:{widthX:"33px"}});var tdWaterImg=mkNode("td",{parent:legendRow2,styles:{widthX:"33px"}});mkNode("img",{width:18,height:18,border:0,src:main.applicationPath+"/images/wave-OnBlue.gif",parent:tdWaterImg});this.legendTDWaterTemp=mkNode("td",{parent:legendRow2,styles:{widthX:"33px"}});var tdActPalm=mkNode("td",{parent:legendRow1,rowspan:2,styles:{width:"25px",paddingLeft:"3px"}});mkNode("img",{width:21,height:23,border:0,src:main.applicationPath+"/images/palm-legend-act.gif",parent:tdActPalm});var tdActText=mkNode("td",{parent:legendRow1,rowspan:2,val:WebResources.map_legend_matching,styles:{widthX:"158px"}});var tdInActPalm=mkNode("td",{parent:legendRow1,rowspan:2,styles:{width:"25px"}});mkNode("img",{width:21,height:23,border:0,src:main.applicationPath+"/images/palm-legend-deact.gif",parent:tdInActPalm});var tdInActText=mkNode("td",{parent:legendRow1,rowspan:2,val:WebResources.map_legend_nonmatching,styles:{width:"125px"}});if(main.initialRegionID>0){this.setMode(1);}else{this.setMode(2);}}
MapView.prototype.setMode=function(mode){if(this.mode==mode)
return;if(mode==1){var height=431;this.map1.domNode.style.height=height+"px";this.map1.innerNode.style.height=(height-2)+"px";this.map1.rightBorderNode.style.height=(height-2)+"px";this.map1.rightBorderNode.style.backgroundImage="url("+main.applicationPath+"/images/map-big-result-right.gif)";this.map1.mapNode.style.height=(height-4)+"px";this.map1.setMapControl(GLargeMapControl);this.legend.style.display="block";}else{this.map1.domNode.style.height="244px";this.map1.innerNode.style.height="242px";this.map1.rightBorderNode.style.height="242px";this.map1.rightBorderNode.style.backgroundImage="url("+main.applicationPath+"/images/map-big-right.gif)";this.map1.mapNode.style.height="240px";this.map1.setMapControl(GSmallMapControl);this.legend.style.display="none";}
this.map1.gMap.checkResize();if(main.page=="result")
this.domNode.style.height=mode==1?"322px":"450px";this.mode=mode;}
function MediaMapView(dataManager,id){this.id=id;this.domNode=$get(id);this.map=null;this.home1=new GLatLng(37.370157,13.974609);this.imgMarker="/images/beachfinder_icon_palm.png";;this.imgMarkerGray="/images/beachfinder_icon_palm_g.png";;this.imgMarkerSmall="/images/beachfinder_icon_palm_s.png";this.imgMarkerSmallGray="/images/beachfinder_icon_palm_g_s.png";this.beachMarkerMinimalZoom=7;this.mode=0;this.currentBeach=0;this.regionMarkers={};this.visibleRegions={};this.init();}
MediaMapView.prototype.init=function(){cW=new Image();cW.src=main.applicationPath+"/images/cursor/w.ico";cS=new Image();cS.src=main.applicationPath+"/images/cursor/start.ico";cE=new Image();cE.src=main.applicationPath+"/images/cursor/e.ico";this.markerIcon=new GIcon(G_DEFAULT_ICON);this.markerIcon.image=main.applicationPath+this.imgMarker;this.markerIcon.iconSize=new GSize(30,34);this.markerIcon.iconAnchor=new GPoint(20,33);this.markerIcon.shadow=null;this.markerIcon.imageMap=null;this.markerIconGray=new GIcon(G_DEFAULT_ICON);this.markerIconGray.image=main.applicationPath+this.imgMarkerGray;this.markerIconGray.iconSize=new GSize(30,34);this.markerIconGray.iconAnchor=new GPoint(20,33);this.markerIconGray.shadow=null;this.markerIconGray.imageMap=null;this.smallMarkerIcon=new GIcon(G_DEFAULT_ICON);this.smallMarkerIcon.image=main.applicationPath+this.imgMarkerSmall;this.smallMarkerIcon.iconSize=new GSize(24,18);this.smallMarkerIcon.iconAnchor=new GPoint(14,17);this.smallMarkerIcon.shadow=null;this.smallMarkerIcon.imageMap=null;this.smallMarkerIconGray=new GIcon(G_DEFAULT_ICON);this.smallMarkerIconGray.image=main.applicationPath+this.imgMarkerSmallGray;this.smallMarkerIconGray.iconSize=new GSize(24,18);this.smallMarkerIconGray.iconAnchor=new GPoint(14,17);this.smallMarkerIconGray.shadow=null;this.smallMarkerIconGray.imageMap=null;this.initMaps();main.addListener(this);}
MediaMapView.prototype.update=function(dType,p1){switch(dType){case"CriterionChanged":if(p1=="region"){this.showRegion(main.criteria["region"]!=0?main.regions[main.criteria["region"]]:null);}
break;case"StaticData":this.map1.addRegionMarkers();break;}}
MediaMapView.prototype.showBeach=function(beach){this.map1.gMap.setZoom(11);this.map1.highlightBeach(beach);this.map1.gMap.setCenter(new GLatLng(beach.PosLat,beach.PosLong));this.currentBeach=beach;}
MediaMapView.prototype.clear=function(){while(this.domNode.childNodes.length>0)
this.domNode.removeChild(this.domNode.childNodes[0]);}
MediaMapView.prototype.mkSpacer=function(w,h){var spacer=document.createElement("img");spacer.src=main.applicationPath+"/images/spacer.gif";spacer.style.width=w?w+"px":"1px";spacer.style.height=h?h+"px":"1px";return spacer;}
MediaMapView.prototype.initMaps=function(){this.map1=new Map(this,"map1",this.domNode,this.home1,3,377,275,"/images/map-big-right.gif","/images/map-big-bottom.gif",false,true,true);this.map1.regionsClickable=false;this.map1.addRegionMarkers();}
function MediaViewer(dataManager,id,pano,pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8,pic9,pic10){this.id=id;this.pano=pano;this.pic1=pic1;this.pic2=pic2;this.pic3=pic3;this.pic4=pic4;this.pic5=pic5;this.pic6=pic6;this.pic7=pic7;this.pic8=pic8;this.pic9=pic9;this.pic10=pic10;this.domNode=$get(id);this.mediaPanoNode=$get("media_pano");this.mediaPictureNode=$get("media_pic");this.panoNode=$get("pano");this.mapNode=$get(id+"_map");this.panoPicWidth=-1;this.scrollDir=2;this.interval=null;this.panoPos=0;this.currentPicture=0;this.init=function(){main.addListener(this);this.panoWidth=$get("media").clientWidth;this.panoPos=this.panoWidth/2;return;}
this.startScroll=function(){var self=this;if(this.interval=null);this.interval=setInterval(function(){self.doStep();},40);try{document.execCommand('BackgroundImageCache',false,true);}catch(e){}}
this.stopScroll=function(){clearInterval(this.interval);this.interval=null;this.setStep(0);}
this.doStep=function(){this.panoPos+=this.scrollDir;if(this.panoPos<this.panoPicWidth/2)
this.panoPos+=this.panoPicWidth;if(this.panoPos>this.panoPicWidth/2)
this.panoPos-=this.panoPicWidth;this.setPanoPos(this.panoPos);}
this.setStep=function(step){if(this.scrollDir==step)
return;this.scrollDir=step;if(step>0)
var cursor=main.applicationPath+"/images/cursor/w.ico";else if(step<0)
var cursor=main.applicationPath+"/images/cursor/e.ico";else
var cursor=main.applicationPath+"/images/cursor/start.ico";this.panoNode.style.cursor="url("+cursor+"), move";}
this.setPanoPos=function(pos){var realPos=(this.panoPicWidth*-.5)+pos;this.panoNode.style.left=realPos+"px";this.panoPos=pos;}
this.unShowPicture=function(){if(this.currentPicture>0){var iSrc=main.applicationPath+"/images/beaches/"+main.cleanString(main.getCurrentRegion().Name)+"/"+this["pic"+this.currentPicture]+"-ov-small.jpg";var thumbNode=$get("pics_ov_"+this.currentPicture);thumbNode.src=iSrc;thumbNode.style.backgroundImage="";this.currentPicture=0;}}
this.showPicture=function(key){if(this["pic"+key]=="")
return;hideNode(this.mapNode);this.unShowPicture();this.stopScroll();main.tracker.trackMedia(this,"showPicture",key);hideNode(this.mediaPanoNode);showNode(this.mediaPictureNode);clearNode(this.mediaPictureNode);var iSrc=main.applicationPath+"/images/beaches/"+main.cleanString(main.getCurrentRegion().Name)+"/"+this["pic"+key]+"-ov-big.jpg";mkNode("img",{parent:this.mediaPictureNode,src:iSrc});var thumbNode=$get("pics_ov_"+key);var pic=thumbNode.src;thumbNode.src=main.applicationPath+"/images/fr-hl-ov.gif";thumbNode.style.backgroundImage="url("+pic+")";this.currentPicture=key;}
this.showMap=function(){this.stopScroll();this.unShowPicture();hideNode(this.mediaPictureNode);hideNode(this.mediaPanoNode);showNode(this.mapNode);var map=main.getWidget(this.id+"_map");if(map==null)
main.registerWidget(MediaMapView,this.id+"_map");var map=main.getWidget(this.id+"_map");map.showBeach(main.getCurrentBeach());main.tracker.trackMedia(this,"showMap");}
this.showPano=function(init){hideNode(this.mediaPictureNode);hideNode(this.mapNode);this.unShowPicture();if(init==undefined||init==false)
main.tracker.trackMedia(this,"showPano");this.setPanoPos(this.panoWidth/2);showNode(this.mediaPanoNode);}
this.onPanoImageLoaded=function(){var pic=document.getElementById("pano_l");this.panoPicWidth=pic.width;this.panoNode.style.width=2*this.panoPicWidth+"px";clearNode(this.panoNode);this.panoNode.innerHTML="&nbsp;";var mPano=$get("media_pano");addEvent(mPano,"mousemove",mkCallBack(this,MediaViewer.prototype.onMouseMove));addEvent(mPano,"mouseover",mkCallBack(this,MediaViewer.prototype.onMouseOver));addEvent(mPano,"mouseout",mkCallBack(this,MediaViewer.prototype.onMouseOut));this.panoNode.style.backgroundImage="url("+main.applicationPath+"/images/beaches/"+main.cleanString(main.getCurrentRegion().Name)+"/"+this.pano+"-p-small.jpg)";}
this.initPano=function(){hideNode(this.mediaPanoNode);clearNode(this.panoNode);var getWidget="main.getWidget( '"+this.id+"' )";var iSrc=main.applicationPath+"/images/beaches/"+main.cleanString(main.getCurrentRegion().Name)+"/"+this.pano+"-p-small.jpg";var t="<img style='visibility:hidden;' id=\"pano_l\" src=\""+iSrc+"\" onload=\""+getWidget+".onPanoImageLoaded()\"/>";this.panoNode.innerHTML=t;}
this.update=function(dType,p1){if(dType=="PostStaticData"){this.initPano();this.showPano(true);this.startScroll();}
return;}
this.init();}
MediaViewer.prototype.onMouseOver=function(e){this.startScroll();}
MediaViewer.prototype.onMouseOut=function(e){this.stopScroll();}
MediaViewer.prototype.onMouseMove=function(e){var x=e.clientX-375/2;var step=Math.ceil(x/10)*-1;this.setStep(step);}
function RentACar(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
RentACar.prototype.init=function(){main.addListener(this);}
RentACar.prototype.update=function(dType){switch(dType){case"StaticData":this.fixTracking();break;}}
RentACar.prototype.trackOfferClicked=function(e,option){main.tracker.trackACar(this,option);}
RentACar.prototype.fixTracking=function(){var hrefs=this.domNode.getElementsByTagName("a");for(var i=0;i<hrefs.length;i++){var href=hrefs[i];var option=href.id.substring(4);addEvent(href,"click",mkCallBack(this,RentACar.prototype.trackOfferClicked,option));href.href+="&mcicid="+main.tracker.getOfferTracking(option);}}
function Result(dataManager,id){this.id=id;this.domNode=$get(id);this.paginatorBars=Array();this.beachesPerRegion=2;this.regionsPerPage=5;this.beachesPerPage=8;this.beachesPerPageMostWanted=10;this.trimLength=19;this.preSelectedPage=-1;this.pagingData=[];this.init();}
Result.prototype.init=function(){main.addListener(this);this.addPagingBar(this.id+"_paging_top",true);this.resultNode=mkNode("div",{id:this.id+"_result",styleClass:"bfinder_result",val:"",parent:this.domNode})
this.addPagingBar(this.id+"_paging_bottom",false);}
Result.prototype.addPagingBar=function(id,showTotal){var bar=new PagingBar(id,this,showTotal);this.paginatorBars.push(bar);this.domNode.appendChild(bar.domNode);}
Result.prototype.callPaginatorBars=function(method,p1,p2,p3){for(var i=0;i<this.paginatorBars.length;i++)
this.paginatorBars[i][method](p1,p2,p3);}
Result.prototype.onFirstPaginatorPageChanged=function(page){this.callPaginatorBars("setFirstPaginatorPage",page);}
Result.prototype.onPaginatorPageSelected=function(page){if(page<1||page>this.pages)
return;main.tracker.trackResult(this,"pagination");this.callPaginatorBars("activatePage",page);this.showPage(page);}
Result.prototype.preSelectPage=function(pageNum){this.preSelectedPage=pageNum;if(this.pagingData.length>=pageNum){this.callPaginatorBars("activatePage",pageNum);this.showPage(pageNum);}}
Result.prototype.update=function(dType,p1){if(dType=="QueryData"){this.data=p1;this.pagingData=[];this.multiRegion=this.data.MultiRegion;if(!this.data.MostWanted&&this.multiRegion==true){var pageBeaches=0
var pageResults=[];for(var regionIndex=0;regionIndex<this.data.RegionResults.length;regionIndex++){var regionResult=this.data.RegionResults[regionIndex];var rBeachCount=regionResult.BeachIDs.length;var rBeaches=rBeachCount>this.beachesPerRegion?this.beachesPerRegion:rBeachCount;pageBeaches+=rBeaches;pageResults.push(regionResult);if(pageBeaches==10||regionIndex==this.data.RegionResults.length-1){this.pagingData.push(pageResults);pageBeaches=0
pageResults=[];}}}else{var beachesPerPage=this.data.MostWanted?this.beachesPerPageMostWanted:this.beachesPerPage;var pages=Math.ceil(this.data.BeachIDs.length/beachesPerPage*1.0);var rCount=this.data.BeachIDs.length;for(var page=1;page<pages+1;page++){var first=(page-1)*beachesPerPage;var last=(page*beachesPerPage)<rCount?(page*beachesPerPage):rCount;var ids=this.data.BeachIDs.slice(first,last);this.pagingData.push(ids);}}
this.pages=this.pagingData.length;this.callPaginatorBars("setTotalHits",this.data.TotalCount);this.callPaginatorBars("setPageCount",this.pages);if(this.pages>0){this.callPaginatorBars("setFirstPaginatorPage",1);this.callPaginatorBars("activatePage",main.currentResultPage);this.showPage(main.currentResultPage);}else{this.showNoResult();}}else if(dType=="CriterionChanged"){this.preSelectedPage=-1;}else if(dType=="PRE_QUERY"){this.showInterstitial();}}
Result.prototype.showNoResult=function(){clearNode(this.resultNode);mkNode("img",{width:376,height:352,border:0,styles:{paddingLeft:"13px",paddingTop:"49px",paddingBottom:"116px"},src:main.applicationPath+"/images/no-res.jpg",parent:this.resultNode});}
Result.prototype.showInterstitial=function(){clearNode(this.resultNode);this.callPaginatorBars("hide");var hTmL="<h2>Die Ergebnisliste wird aktualisiert</h2><img alt='' src='"+main.applicationPath+"/images/blue-load.gif' width='48' height='48'>";mkNode("div",{iHTML:hTmL,styleClass:"interstitial",parent:this.resultNode});}
Result.prototype.trackShowRegionResults=function(e,region){main.tracker.trackResult(this,"regionresults",region);}
Result.prototype.trackShowBeach=function(e,beach){main.tracker.trackResult(this,"showBeach",beach);}
Result.prototype.getBeachImage=function(beach){var url=main.applicationPath+"/images/beaches";var region=main.regions[beach.RegionID];url+="/"+main.cleanString(region.Name);url+="/"+beach.Picture;url+="-ov-start.jpg";return url;}
Result.prototype.renderBeach=function(beach,showRegionName,indexNumber){if(beach==undefined)
return mkNode("div",{val:"null"});if(showRegionName==undefined)
showRegionName=false;var beachID=beach.ID;var imgSrc=this.getBeachImage(beach);var detLink=main.getBeachLink(beach);var trackCB=mkCallBack(this,Result.prototype.trackShowBeach,beach);var oTable=mkNode("table",{id:this.id+"_beach_"+beachID,styleClass:showRegionName?"bc_lo":"bc_sm"});var oTBody=mkNode("tbody",{parent:oTable});var oTR1=mkNode("tr",{parent:oTBody,styleClass:"bc_tr1"});var oTD1=mkNode("td",{styleClass:"b_left",parent:oTR1,colspan:2});var iTable=mkNode("table",{parent:oTD1});var iTBody=mkNode("tbody",{parent:iTable});var iTR=mkNode("tr",{parent:iTBody});var iTD1=mkNode("td",{parent:iTR});var link=mkNode("a",{styleClass:"ps_a",val:shorten(beach.Name,this.trimLength),title:beach.Name,href:detLink,parent:iTD1});addEvent(link,"click",trackCB);mkNode("br",{parent:iTD1});mkNode("strong",{title:beach.BeachVillageName,val:shorten(beach.BeachVillageName.Name,this.trimLength),parent:iTD1});if(showRegionName){mkNode("br",{parent:iTD1});iTD1.appendChild(document.createTextNode(shorten(beach.Region.Name,this.trimLength)));}
var iTD2=mkNode("td",{width:"34",styles:{width:"34px"},parent:iTR});var iTD2Div=mkNode("div",{styleClass:"bc_d1",parent:iTD2});if(indexNumber!=null)
mkNode("strong",{val:indexNumber,parent:iTD2Div});else
mkNode("strong",{val:"",parent:iTD2Div});mkNode("img",{width:24,height:27,border:0,src:main.applicationPath+"/images/img-shadeOnwhite-s.gif",parent:iTD2Div,alt:""});var oTR2=mkNode("tr",{parent:oTBody});var oTD2=mkNode("td",{styleClass:"bc_td1",parent:oTR2});var link2=mkNode("a",{href:detLink,parent:oTD2});addEvent(link2,"click",trackCB);mkNode("img",{width:180,height:165,styles:{width:"180px",height:"165px"},border:0,src:imgSrc,parent:link2,alt:""});var oTD3=mkNode("td",{parent:oTR2});mkNode("img",{width:2,height:165,border:0,src:main.applicationPath+"/images/beach-card-right.gif",parent:oTD3,alt:""});var oTR3=mkNode("tr",{parent:oTBody});var oTD4=mkNode("td",{styleClass:"bc_td2",parent:oTR3,colspan:2});var oTD4Div=mkNode("div",{parent:oTD4});var link3=mkNode("a",{href:detLink,val:WebResources.result_details,styleClass:"ps_a",parent:oTD4Div});addEvent(link3,"click",trackCB);var link4=mkNode("a",{href:detLink,parent:oTD4Div});mkNode("img",{width:17,height:17,border:0,src:main.applicationPath+"/images/btn-i-blueOnwhite.gif",parent:link4,alt:""});addEvent(link4,"click",trackCB);return oTable;}
Result.prototype.renderBeaches=function(data,isRegionResult,renderRegionName,renderIndex){var tableClass="cardresult";if(isRegionResult){tableClass+=" regionresult";}else if(renderRegionName){tableClass+=" mostwantedresult";}else{tableClass+=" noregionresult";}
var table=mkNode("table",{styleClass:tableClass});var tbody=mkNode("tbody",{parent:table});var beachDisplayIndex=1;for(var rowIndex=0;rowIndex<data.rows.length;rowIndex++){var rowData=data.rows[rowIndex];if(isRegionResult)
var sepRow=mkNode("tr",{parent:tbody,styleClass:"row"+(rowIndex+1)});if(isRegionResult)
var titleRow=mkNode("tr",{parent:tbody,styleClass:"row"+(rowIndex+1)});var beachRow=mkNode("tr",{parent:tbody,styleClass:"row"+(rowIndex+1)});if(isRegionResult)
var linkMoreRow=mkNode("tr",{parent:tbody});for(var columnIndex=0;columnIndex<rowData.columns.length;columnIndex++){var colData=rowData.columns[columnIndex];if(isRegionResult){var sepClass=colData.cells.length>1?"sepw":"sepn";mkNode("td",{parent:sepRow,colspan:colData.cells.length,styleClass:sepClass+" "+(sepClass+(columnIndex+1)),iHTML:"<div><img width=\"1\" height=\"1\" src=\"/images/spacer.gif\" alt=\"\"/></div>"});}
if(isRegionResult){var regionResult=colData.regionResult;var region=colData.region;var beachCount=regionResult.BeachIDs.length;var format_singular=WebResources["result_beaches_at_region_singular_"+region.Code]!=undefined?WebResources["result_beaches_at_region_singular_"+region.Code]:WebResources.result_beaches_at_region_singular;var format=beachCount>1?WebResources.result_beaches_at_region_plural:format_singular;var title=sprintf(format,regionResult.BeachIDs.length,main.regions[regionResult.RegionID].Name);mkNode("td",{iHTML:"<b>"+title+"</b>",parent:titleRow,colspan:colData.cells.length,styleClass:"title title"+(columnIndex+1)});}
for(var cellIndex=0;cellIndex<colData.cells.length;cellIndex++){var beach=colData.cells[cellIndex];var tdBeach=mkNode("td",{parent:beachRow,styleClass:"cell cell"+(columnIndex*2+cellIndex+1)});if(beach!=undefined)
tdBeach.appendChild(this.renderBeach(beach,renderRegionName,renderIndex?beachDisplayIndex++:null));}
if(isRegionResult&&colData.hasMore){var tdMore=mkNode("td",{parent:linkMoreRow,colspan:2,styleClass:"more more"+(columnIndex+1)});var divMore=mkNode("div",{parent:tdMore,styleClass:"more"});var detLink=main.getRegionLink(region);var trackCB=mkCallBack(this,Result.prototype.trackShowRegionResults,region);var link1=mkNode("a",{styleClass:"ps_a",href:detLink,val:WebResources.result_more_beaches,parent:divMore});addEvent(link1,"click",trackCB);var imgLink=mkNode("a",{href:detLink,styleClass:"ps_a",parent:divMore});addEvent(imgLink,"click",trackCB);mkNode("img",{width:17,height:17,border:0,src:main.applicationPath+"/images/btn-next-OnBlue.gif",parent:imgLink});}else if(isRegionResult){var tdMore=mkNode("td",{parent:linkMoreRow,colspan:2,styleClass:"more more"+(columnIndex+1)});var divMore=mkNode("div",{parent:tdMore,styleClass:"more"});}}}
this.resultNode.appendChild(table);}
Result.prototype.getRegionResultRows=function(regionResults){var tableColumns=[1,2,2];var result={};result.rows=[];var done=false;var rowIndex=0;var cellIndex=0;while(!done){var row={};result.rows.push(row);row.columns=[];var rowColumns=tableColumns.length>rowIndex?tableColumns[rowIndex]:tableColumns[tableColumns.length-1];var rBeaches=rowColumns*2;var rBeach=0;while(rBeach<rBeaches){var column={};row.columns.push(column);column.cells=[];var regionResult=regionResults[cellIndex];var region=main.regions[regionResult.RegionID];var beachCount=regionResult.BeachIDs.length;column.region=region;column.regionResult=regionResult;for(var beachIndex=0;beachIndex<this.beachesPerRegion;beachIndex++){if(beachIndex>=beachCount)
break;column.cells.push(regionResult.Beaches[regionResult.BeachIDs[beachIndex]]);rBeach++;}
column.hasMore=this.beachesPerRegion<beachCount;cellIndex++;if(cellIndex==regionResults.length){done=true;break;}}
rowIndex++;}
return result;}
Result.prototype.getResultRows=function(beachIDs,tableColumns){var result={};result.rows=[];var done=false;var rowIndex=0;var cellIndex=0;var beachesPerPage=this.data.MostWanted?this.beachesPerPageMostWanted:this.beachesPerPage;while(!done){var row={};result.rows.push(row);row.columns=[];var rowColumns=tableColumns.length>rowIndex?tableColumns[rowIndex]:tableColumns[tableColumns.length-1];var beachCount=beachIDs.length;for(var columnIndex=0;(columnIndex<rowColumns&&cellIndex<beachIDs.length);columnIndex++){var column={};row.columns.push(column);column.cells=[];for(var beachIndex=0;beachIndex<2;beachIndex++){var beachID=beachIDs[cellIndex];if(beachIndex>=beachCount)
break;cellIndex++;column.cells.push(main.beaches[beachID]);if(cellIndex==beachesPerPage||cellIndex==beachIDs.length){done=true;break;}}}
rowIndex++;}
return result;}
Result.prototype.showPage=function(page){clearNode(this.resultNode);if(!this.data.MostWanted&&this.multiRegion){this.renderBeaches(this.getRegionResultRows(this.pagingData[page-1]),true,false);main.onResultPageSelected(null,page);}else{var beachIDs=this.pagingData[page-1];this.renderBeaches(this.getResultRows(beachIDs,this.data.MostWanted?[1,2,2]:[1,1,2]),false,this.data.MostWanted,(!this.data.MostWanted&&true));main.onResultPageSelected(beachIDs,page);}}
Result.prototype.hide=function(){this.domNode.style.display="none";}
Result.prototype.show=function(){this.domNode.style.display="block";}
function TravelOffers(dataManager,id){this.id=id;this.domNode=$get(id);this.init();}
TravelOffers.prototype.init=function(){main.addListener(this);}
TravelOffers.prototype.update=function(dType){switch(dType){case"StaticData":this.fixTracking();break;}}
TravelOffers.prototype.trackOfferClicked=function(e,offerPos){main.tracker.trackTravelOffers(this,"offerclicked",offerPos);}
TravelOffers.prototype.fixTracking=function(){var hrefs=this.domNode.getElementsByTagName("a");for(var i=0;i<hrefs.length;i++){var href=hrefs[i];var pos=parseInt(href.id.substring(4));addEvent(href,"click",mkCallBack(this,TravelOffers.prototype.trackOfferClicked,pos));href.href+="&mcicid="+main.tracker.getOfferTracking("p0"+pos);}}
function CriterionCheckbox(dataManager,id,form,criterion,initialChecked,helpKey){this.id=id;this.form=form;this.criterion=criterion;this.initialChecked=initialChecked?true:false;this.helpKey=helpKey;this.domNode=$get(id);this.cbNode=$get(id+"_cb");this.infoVisible=false;this.infoNode=null;this.labelNode=this.domNode.getElementsByTagName("label")[0];this.init();}
CriterionCheckbox.prototype.init=function(){this.cbNode.checked=main.criteria[this.criterion]==true;this.baseLabelText=this.labelNode.innerHTML;var imgs=this.domNode.getElementsByTagName("img");if(imgs.length>0){addEvent(imgs[0],"mouseover",mkCallBack(this,CriterionCheckbox.prototype.showInfo));addEvent(imgs[0],"mouseout",mkCallBack(this,CriterionCheckbox.prototype.hideInfo));}
main.addListener(this);}
CriterionCheckbox.prototype.onChanged=function(){this.form.onCriterionChanged(this.criterion,this.cbNode.checked);return true;}
CriterionCheckbox.prototype.update=function(dType,p1){switch(dType){case"QueryData":var amount=p1.AmountByFlagCriteria[this.criterion];if(amount!=undefined&&!this.cbNode.checked){this.labelNode.innerHTML=this.baseLabelText+" ("+amount+")";}else{this.labelNode.innerHTML=this.baseLabelText;}
break;case"CriterionChanged":if(p1==this.criterion){this.cbNode.checked=main.criteria[this.criterion]==true;}
break;}}
CriterionCheckbox.prototype.hideInfo=function(){this.domNode.removeChild(this.infoNode);this.infoVisible=false;this.infoNode=null;}
CriterionCheckbox.prototype.showInfo=function(e){var x,y;if(window.pageYOffset)
{x=window.pageXOffset;y=window.pageYOffset;}
else if(document.documentElement&&document.documentElement.scrollTop)
{x=document.documentElement.scrollLeft;y=document.documentElement.scrollTop;}
else if(document.body)
{x=document.body.scrollLeft;y=document.body.scrollTop;}
var posX=e.clientX+x+10;var posY=e.clientY+y+10;var table=mkNode("table",{styleClass:"infolayer",parent:this.domNode,styles:{position:"absolute",left:posX+"px",top:posY+"px"}});var tb=mkNode("tbody",{parent:table})
var r1=mkNode("tr",{parent:tb});var td1=mkNode("td",{styleClass:"in",parent:r1});var r2=mkNode("tr",{parent:tb});var td2=mkNode("td",{styleClass:"in2",val:WebResources["help_"+this.helpKey+"_title"],parent:r2});var r3=mkNode("tr",{parent:tb});var td3=mkNode("td",{styleClass:"ic",val:WebResources["help_"+this.helpKey+"_content"],parent:r3});var r4=mkNode("tr",{parent:tb});var td4=mkNode("td",{styleClass:"is",parent:r4});this.infoNode=table;this.infoVisible=true;}
function CriterionDropDown(dataManager,id,form,criterion,dataKey,noSelectionTitle,initialValue){this.id=id;this.form=form;this.criterion=criterion;this.dataKey=dataKey;this.noSelectionTitle=noSelectionTitle;this.initialValue=initialValue;this.domNode=$get(id);this.domNodeSelect=$get(id+"_sel");this.optionNodes={};this.showAmounts=true;this.init();}
CriterionDropDown.prototype.init=function(){this.overrideData(null);main.addListener(this);}
CriterionDropDown.prototype.overrideData=function(data){if(data==null){this.data=main[this.dataKey];}else{this.data=data;}}
CriterionDropDown.prototype.clear=function(){while(this.domNodeSelect.childNodes.length>0){this.domNodeSelect.removeChild(this.domNodeSelect.childNodes[0]);}}
CriterionDropDown.prototype.addOption=function(text,value){var option=document.createElement("option");option.value=value;var txtNode=document.createTextNode(text);option.appendChild(txtNode);if(value==main.criteria[this.criterion])
option.selected=true;this.optionNodes[value]=option;this.domNodeSelect.appendChild(option);return;}
CriterionDropDown.prototype.updateAmounts=function(amounts){for(var key in this.optionNodes){try{if(this.domNodeSelect.value!=key&&amounts!=undefined&&amounts[key]!=undefined&&this.showAmounts==true){this.optionNodes[key].text=this.data[key].Name+" ("+amounts[key]+")";}else{this.optionNodes[key].text=this.data[key].Name;}}catch(e){}}}
CriterionDropDown.prototype.updateOptions=function(){this.clear();if(this.noSelectionTitle)
this.addOption(this.noSelectionTitle,0);for(var id in this.data)
this.addOption(this.data[id].Name,this.data[id].ID);}
CriterionDropDown.prototype.update=function(dType,p1){switch(dType){case"StaticData":this.overrideData(null);this.updateOptions();break;case"CriterionChanged":if(p1==this.criterion){this.domNodeSelect.value=main.criteria[this.criterion];}
break;case"QueryData":var amounts=p1["AmountBy_"+this.criterion];this.updateAmounts(amounts);break;}}
CriterionDropDown.prototype.onChanged=function(){this.form.onCriterionChanged(this.criterion,this.domNodeSelect.value);document.getElementsByTagName("input")[3].focus();document.getElementsByTagName("input")[3].blur();return true;}
function RegionDropDown(dataManager,id,form,criterion,dataKey,noSelectionTitle,initialValue){CriterionDropDown.call(this,dataManager,id,form,criterion,dataKey,noSelectionTitle,initialValue);}
inherit(RegionDropDown,CriterionDropDown);RegionDropDown.prototype.init=function(){CriterionDropDown.prototype.init.apply(this);this.showAmounts=main.criteria["beach_village"]==0;}
RegionDropDown.prototype.update=function(dType,p1){switch(dType){case"CriterionChanged":if(p1=="beach_village"){this.showAmounts=main.criteria["beach_village"]==0;this.updateAmounts();return;}
break;}
CriterionDropDown.prototype.update.apply(this,[dType,p1]);}
function VillageDropDown(dataManager,id,form,criterion,dataKey,noSelectionTitle,initialValue){CriterionDropDown.call(this,dataManager,id,form,criterion,dataKey,noSelectionTitle,initialValue);}
inherit(VillageDropDown,CriterionDropDown);VillageDropDown.prototype.init=function(){CriterionDropDown.prototype.init.apply(this);}
VillageDropDown.prototype.update=function(dType,p1){switch(dType){case"StaticData":if(main.criteria["region"]==0){this.overrideData(null);}else{this.overrideData(main.regions[main.criteria["region"]].BeachVillageNames);this.updateOptions();return;}
break;case"CriterionChanged":if(p1=="region"){if(main.criteria["region"]==0){this.overrideData(null);}else{var regionVillageNames=main.regions[main.criteria["region"]].BeachVillageNames;this.overrideData(regionVillageNames);if(main.criteria["beach_village"]!=0){if(regionVillageNames[main.criteria["beach_village"]]==undefined)
main.setCriterion("beach_village",0);}}
this.updateOptions();return;}
break;}
CriterionDropDown.prototype.update.apply(this,[dType,p1]);}
function BeachMarker(regionMarker,beach){GMarker.call(this,new GLatLng(beach.PosLat,beach.PosLong),{title:beach.Name,icon:regionMarker.map.mapView.smallMarkerIcon});this.regionMarker=regionMarker;this.beach=beach;this.inResult=false;var self=this;GEvent.addListener(this,"click",self.openInfo);GEvent.addListener(this,"infowindowclose",self.closeInfo);}
inherit(BeachMarker,GMarker);BeachMarker.prototype.setInResult=function(inResult){var iURL=main.applicationPath;this.inResult=inResult;if(inResult)
return this.checkIndexVisible();else
iURL+=this.regionMarker.map.mapView.imgMarkerSmallGray;this.setImage(iURL);}
BeachMarker.prototype.checkIndexVisible=function(){if(!this.inResult)
return;var iURL=main.applicationPath;var index=main.visibleResultBeaches[this.beach.ID];if(index==undefined){iURL+=this.regionMarker.map.mapView.imgMarkerSmall;}else{iURL+=this.regionMarker.map.mapView.imgMarkerIndex[index];}
this.setImage(iURL);}
BeachMarker.prototype.closeInfo=function(){this.regionMarker.map.gMap.returnToSavedPosition();this.regionMarker.onBeachInfoClosed();}
BeachMarker.prototype.openInfo=function(){this.regionMarker.map.gMap.savePosition();this.regionMarker.onBeachInfoOpened();this.regionMarker.onBeachMarkerClicked(this);var cRegionName=main.cleanString(main.regions[this.beach.RegionID].Name);var cVillageName=main.cleanString(this.beach.BeachVillageName);var cBeachName=main.cleanString(this.beach.Name);var url=main.applicationPath+"/"+cRegionName+"/"+cVillageName+"/"+cBeachName+"/details.aspx";var iUrl;if(this.beach.Picture!="")
iUrl=main.applicationPath+"/images/beaches/"+cRegionName+"/"+this.beach.Picture+"-res-small.jpg";else
iUrl=main.applicationPath+"/images/no-beach-res-sm.gif";var onclick="main.getWidget('"+this.regionMarker.map.mapView.id+"')['"+this.regionMarker.map.id+"'].regionMarkers["+this.regionMarker.region.ID+"].onBeachMarkerDetailsClicked("+this.beach.ID+")";this.openInfoWindowHtml("<table style='font-size: 11px;padding:0;' cellspacing='0' cellpadding='0'>"+"<tbody>"+"<tr>"+"<td rowspan='6' style='vertical-align:top;'>"+"<img width='100' height='74' border='0' src=\""+iUrl+"\" alt=''/>"+"</td>"+"<td rowspan='6' style='width:7px;'>&nbsp;</td>"+"<td>"+"<a class='ps_a' onclick=\""+onclick+"\" href=\""+url+"\">"+this.beach.Name+"</a>"+"</td>"+"</tr>"+"<tr>"+"<td>"+
this.beach.BeachType+", "+this.beach.BeachAccess+"</td>"+"</tr>"+"<tr>"+"<td>"+
WebResources.info_size+" "+this.beach.Length+"x"+this.beach.Width+"m"+"</td>"+"</tr>"+"<tr>"+"<td>"+
this.beach.BeachCondition+", "+this.beach.BeachSandColor+"</td>"+"</tr>"+"<tr>"+"<td>"+
WebResources.info_visitors+" "+this.beach.BeachVisitors+"</td>"+"</tr>"+"<tr>"+"<td style='text-align:right;'>"+"<a class='ps_a' onclick=\""+onclick+"\" href=\""+url+"\">"+WebResources.info_show_details+"</a>"+"&nbsp;<a onclick=\""+onclick+"\" href=\""+url+"\"><img alt='' style='vertical-align:middle;' width='28' height='28' src=\""+main.applicationPath+"/images/btn-next-Arrow-OnWhite.gif\" border='0'></a>"+"</td>"+"</tr>"+"</tbody>"+"</table>",{maxWidth:280});}
function Map(mapView,id,mapParent,home,zoom,width,height,rightBorderImage,bottomBorderImage,enableOverview,enableMapType,enableSmallMapControl,enableLargeMapControl){this.mapView=mapView;this.id=id;this.mapParent=mapParent;this.home=home;this.zoom=zoom;this.width=width;this.height=height;this.rightBorderImage=rightBorderImage;this.bottomBorderImage=bottomBorderImage;this.enableOverview=enableOverview;this.enableMapType=enableMapType;this.enableSmallMapControl=enableSmallMapControl;this.enableLargeMapControl=enableLargeMapControl;this.regionMarkers=Array();this.overviewControl=null;this.mapNode=null;this.mapControl=null;this.regionsClickable=true;this.domNode=this.makeNode(id,width,height,rightBorderImage,bottomBorderImage);this.mapParent.appendChild(this.domNode);this.createGoogleMap(this.mapNode,this.home,zoom,enableOverview,enableMapType,enableSmallMapControl,enableLargeMapControl);this.bounds=this.gMap.getBounds();}
Map.prototype.showOverview=function(){if(this.overviewControl==null)
this.overviewControl=new GOverviewMapControl();this.gMap.addControl(this.overviewControl);}
Map.prototype.hideOverview=function(){if(this.overviewControl!=null)
this.gMap.removeControl(this.overviewControl);}
Map.prototype.setResult=function(result){for(var regionID in this.regionMarkers){var regionResult=result.RegionResultsByRegionID[regionID];var regionMarker=this.regionMarkers[regionID];regionMarker.setRegionInResult(regionResult!=undefined);regionMarker.setResultBeaches(regionResult!=undefined?regionResult.Beaches:{});}
this.markerManager.refresh();}
Map.prototype.checkIndizesVisible=function(){for(var regionID in this.regionMarkers){var regionMarker=this.regionMarkers[regionID];regionMarker.checkIndizesVisible();}}
Map.prototype.highlightBeach=function(beach){var regionMarker=this.regionMarkers[beach.RegionID];var result={};result[beach.ID]=beach;regionMarker.setResultBeaches(result);}
Map.prototype.checkRegionMarkersVisibility=function(){for(var regionID in this.regionMarkers){var marker=this.regionMarkers[regionID];var visible=this.zoom>=this.mapView.beachMarkerMinimalZoom&&marker.beachBounds.intersects(this.bounds);if(marker.beachesVisible!=visible)
marker.setBeachesVisible(visible);}}
Map.prototype.mapZoomed=function(oldLevel,newLevel,map){this.bounds=this.gMap.getBounds();this.zoom=this.gMap.getZoom();if((oldLevel<this.beachMarkerMinimalZoom&&newLevel>=this.beachMarkerMinimalZoom)||oldLevel>=this.beachMarkerMinimalZoom&&newLevel<this.beachMarkerMinimalZoom)
this.checkRegionMarkersVisibility();}
Map.prototype.mapMoved=function(map){this.bounds=this.gMap.getBounds();this.zoom=this.gMap.getZoom();this.checkRegionMarkersVisibility();}
Map.prototype.onRegionClicked=function(regionID){if(!this.regionsClickable)
return;var region=main.regions[regionID];var regionMarker=this.regionMarkers[regionID];main.tracker.trackMap(this,"regionMarkerClicked",regionMarker);if(main.autoUpdate)
main.setCriterion("region",regionID,true);else
document.location.href=main.applicationPath+"/"+main.cleanString(region.Name)+"/"+main.initialSearchCriteria+"/search.aspx";}
Map.prototype.addRegionMarkers=function(){var markerManager=new GMarkerManager(this.gMap);for(var id in main.regions){var region=main.regions[id];var marker=new RegionMarker(this,region);markerManager.addMarker(marker,1,this.mapView.beachMarkerMinimalZoom-1);this.regionMarkers[region.ID]=marker;GEvent.addListener(marker,"click",new Function("main.getWidget(\""+this.mapView.id+"\")[\""+this.id+"\"].onRegionClicked("+region.ID+")"));}
markerManager.refresh();this.markerManager=markerManager;}
Map.prototype.setMapControl=function(mapControlType){if((mapControlType!=GSmallMapControl)&&(mapControlType!=GLargeMapControl)){alert("Map.prototype.setMapControl: unknown mapControlType: "+mapControlType);return;}
if(this.mapControl!=null)
this.gMap.removeControl(this.mapControl);this.mapControl=new mapControlType();this.gMap.addControl(this.mapControl);}
Map.prototype.createGoogleMap=function(parent,home,zoom,enableOverview,enableMapType,enableSmallMapControl,enableLargeMapControl){var map=new GMap2(parent);this.gMap=map;map.setCenter(home,3);if(enableSmallMapControl){this.setMapControl(GSmallMapControl);}else if(enableLargeMapControl){this.setMapControl(GLargeMapControl);}
if(enableMapType)
map.addControl(new GMapTypeControl());if(enableOverview)
map.addControl(new GOverviewMapControl());map.enableDoubleClickZoom();map.enableContinuousZoom();map.setZoom(zoom);var self=this;GEvent.addListener(map,"moveend",function(){self.mapMoved()});GEvent.addListener(map,"zoomend",function(a,b){self.mapZoomed(a,b)});return map;}
Map.prototype.makeNode=function(id,width,height,rightBorderImage,bottomBorderImage){var outer=document.createElement("div");outer.id=id+"_outer";outer.style.height=height+"px";outer.style.width=width+"px";var inner=document.createElement("div");inner.id=id+"_inner";inner.style.height=(height-2)+"px";inner.style.width=width+"px";inner.style.position="relative";inner.style.overflow="hidden";var map=document.createElement("div");map.id=id+"_gm";map.style.height=(height-4)+"px";map.style.width=(width-4)+"px";map.style.cssFloat="left";map.style.styleFloat="left";map.style.border="1px solid #6699cc";var rightBorder=document.createElement("div");rightBorder.id=id+"_b_r";rightBorder.style.cssFloat="right";rightBorder.style.styleFloat="right";rightBorder.style.width="2px"
rightBorder.style.height=(height-2)+"px"
rightBorder.style.backgroundImage="url("+main.applicationPath+rightBorderImage+")";rightBorder.appendChild(mkSpacer());var bottomBorder=document.createElement("div");bottomBorder.id=id+"_b_b";bottomBorder.style.width=width+"px"
bottomBorder.style.height="2px"
bottomBorder.style.backgroundImage="url("+main.applicationPath+bottomBorderImage+")";bottomBorder.appendChild(mkSpacer());inner.appendChild(map);inner.appendChild(rightBorder);outer.appendChild(inner);outer.appendChild(bottomBorder);this.rightBorderNode=rightBorder;this.innerNode=inner;this.mapNode=map;return outer;}
function RegionMarker(map,region){GMarker.call(this,new GLatLng(region.PosLat,region.PosLong),{title:region.Name+" ("+region.BeachCount+" Strände)",icon:new GIcon(map.mapView.markerIconGray)});this.beachMarkers={};this.beachesVisible=false;this.map=map;this.region=region;this.beachInfoOpen=false;this.resultBeaches={};this.beachMarkerTimeouts=[];this.regionInResult=false;this.init();}
inherit(RegionMarker,GMarker);RegionMarker.prototype.init=function(){this.beachBounds=new GLatLngBounds();for(var beachID in this.region.Beaches){var beach=this.region.Beaches[beachID];this.beachBounds.extend(new GLatLng(beach.PosLat,beach.PosLong));}}
RegionMarker.prototype.updateMarker=function(){this.getIcon().image=this.regionInResult?"/images/beachfinder_icon_palm.png":"/images/beachfinder_icon_palm_g.png";}
RegionMarker.prototype.setRegionInResult=function(state){if(this.regionInResult==state)
return;this.regionInResult=state;this.updateMarker();}
RegionMarker.prototype.onBeachMarkerClicked=function(beachMarker){main.tracker.trackMap(this,"beachMarkerClicked",beachMarker);}
RegionMarker.prototype.onBeachMarkerDetailsClicked=function(beachID){var beachMarker=this.beachMarkers[beachID];main.tracker.trackMap(this,"beachMarkerDetailsClicked",beachMarker);}
RegionMarker.prototype.updateResultBeaches=function(){for(var beachID in this.beachMarkers){var beachMarker=this.beachMarkers[beachID];var inResult=this.resultBeaches[beachID]!=undefined;beachMarker.setInResult(inResult);}}
RegionMarker.prototype.checkIndizesVisible=function(){for(var beachID in this.beachMarkers){var beachMarker=this.beachMarkers[beachID];beachMarker.checkIndexVisible();}}
RegionMarker.prototype.setResultBeaches=function(beaches){this.resultBeaches=beaches;this.updateResultBeaches();}
RegionMarker.prototype.onBeachInfoOpened=function(){this.beachInfoOpen=true;}
RegionMarker.prototype.onBeachInfoClosed=function(){this.beachInfoOpen=false;}
RegionMarker.prototype.addBeachMarkerSubSet=function(e,markers){this.beachMarkerTimeouts.shift();for(var i=0;i<markers.length;i++){var beach=markers[i];var marker=new BeachMarker(this,beach);this.map.gMap.addOverlay(marker);this.beachMarkers[beach.ID]=marker;var inResult=this.resultBeaches[beach.ID]!=undefined;marker.setInResult(inResult);}}
RegionMarker.prototype.addBeachMarkers=function(){var subSize=1;var iValOff=1000;var iValBase=25;var bA=Array();for(var key in this.region.Beaches){bA.push(this.region.Beaches[key]);}
var subs=Math.ceil(bA.length/(subSize*1.0));for(var i=0;i<subs;i++){var first=i*subSize;var last=(first+subSize)<bA.length?first+subSize:bA.length;var subSet=bA.slice(first,last);var cb=mkCallBack(this,RegionMarker.prototype.addBeachMarkerSubSet,subSet);this.beachMarkerTimeouts.push(window.setTimeout(cb,i*iValBase+iValOff));}}
RegionMarker.prototype.removeBeachMarkers=function(){for(var i=0;i<this.beachMarkerTimeouts.length;i++){window.clearTimeout(this.beachMarkerTimeouts[i]);}
this.beachMarkerTimeouts=[];for(var beachID in this.beachMarkers){var marker=this.beachMarkers[beachID];this.map.gMap.removeOverlay(marker);}
this.beachMarkers={};}
RegionMarker.prototype.setBeachesVisible=function(state){if(state==this.beachesVisible||this.beachInfoOpen==true)
return;this.beachesVisible=state;if(state==true)
this.addBeachMarkers();else
this.removeBeachMarkers();}
function PagingBar(id,result,showTotal){var self=this;this.id=id;this.result=result;this.showTotal=showTotal;this.pagesTables=null;this.arrowLL=null;this.arrowL=null;this.pageNodes=Array();this.arrowR=null;this.arrowRR=null;this.activePage=0;this.firstPaginatorPage=0;this.visiblePaginatorEntries=8;this.visiblePaginatorPages=this.visiblePaginatorEntries-4;this.leftArrowsVisible=true;this.rightArrowsVisible=true;this.locked=false;this.init=function(){this.domNode=this.initDOM();}
this.initDOM=function(){var res=this.mkNode("div",{id:this.id,styleClass:"bfinder_paging"});var oTable=this.mkNode("table",{styleClass:"outer",parent:res});var oTBody=this.mkNode("tbody",{parent:oTable});var oTR=this.mkNode("tr",{parent:oTBody});var oTDl=this.mkNode("td",{id:this.id+"_hits",styleClass:"left",parent:oTR});var oTDr=this.mkNode("td",{styleClass:"right",parent:oTR});var iDIV=this.mkNode("div",{parent:oTDr});this.pagesTables=this.mkNode("table",{id:this.id+"_pages",styleClass:"inner",parent:iDIV});var iTBody=this.mkNode("tbody",{parent:this.pagesTables});var iTR=this.mkNode("tr",{id:this.id+"_pagerow",parent:iTBody});return res;}
this.mkNode=function(tag,args){var node=mkNode(tag,args);if(args.cbVal)
addEvent(node,"click",mkCallBack(this,PagingBar.prototype.onClick,args.cbVal));return node;}
this.setTotalHits=function(hits){var node=$get(this.id+"_hits",this.domNode);this.clear(node);if(showTotal){if(this.result.data.MostWanted){mkNode("h2",{val:WebResources.result_most_wanted,parent:node});}else{var format=hits>1?WebResources.result_total_beaches_plural:WebResources.result_total_beaches_singular;mkNode("h2",{val:sprintf(format,hits),parent:node});}}}
this.setPageCount=function(count){var rowNode=$get(this.id+"_pagerow",this.domNode);this.hide();this.clear(rowNode);this.mkNode("td",{val:WebResources.result_page,styleClass:"plabel",parent:rowNode});if(count==0)
return;this.arrowLL=this.mkNode("td",{val:"<<",cbVal:"<<",parent:rowNode,styles:{borderLeft:"1px solid white",display:"none"}});this.arrowL=this.mkNode("td",{val:"<",cbVal:"<",parent:rowNode,styles:{display:"none"}});for(var i=1;i<count+1;i++)
this.pageNodes.push(this.mkNode("td",{val:i,cbSelf:self,styles:{display:"none"},cbVal:i,parent:rowNode}));this.arrowR=this.mkNode("td",{val:">",cbVal:">",styles:{display:"none"},parent:rowNode});this.arrowRR=this.mkNode("td",{val:">>",cbVal:">>",styles:{display:"none"},parent:rowNode});this.toggleArrows("hide");this.pages=count;if(this.pages<2)
this.hideNode(this.pagesTables);else
this.showNode(this.pagesTables);this.show();}
this.toggleArrows=function(what,which){switch(which){case"left":this[what+"Node"](this.arrowL);this[what+"Node"](this.arrowLL);this.pageNodes[0].style.borderLeft=(what=="show")?"":"1px solid white";break;case"right":this[what+"Node"](this.arrowR);this[what+"Node"](this.arrowRR);break;default:this.toggleArrows(what,"left");this.toggleArrows(what,"right");break;}
this[which+"ArrowsVisible"]=(what=="show");}
this.setFirstPaginatorPage=function(page){var visibleItems=this.visiblePaginatorEntries
var leftItems=page;var rightItems=this.pages-page;if(page==1){if(this.leftArrowsVisible)
this.toggleArrows("hide","left");}else{if(!this.leftArrowsVisible)
this.toggleArrows("show","left");visibleItems-=2;}
if(rightItems>=visibleItems){if(!this.rightArrowsVisible)
this.toggleArrows("show","right");visibleItems-=2;}else{if(this.rightArrowsVisible)
this.toggleArrows("hide","right");}
for(var i=1;i<this.pages+1;i++){if(i<leftItems||i>=page+visibleItems)
this.hideNode(this.pageNodes[i-1]);else
this.showNode(this.pageNodes[i-1]);}
this.firstPaginatorPage=page;this.visiblePaginatorPages=visibleItems;}
this.hideNode=function(node){node.style.display="none";}
this.showNode=function(node){node.style.display="";}
this.activatePage=function(index){if(this.activePage>0)
this.pageNodes[this.activePage-1].className="pageNum";this.pageNodes[index-1].className="act";this.activePage=index;}
this.clear=function(node){clearNode(node);this.arrowLL=null;this.arrowL=null;this.pageNodes=Array();this.arrowR=null;this.arrowRR=null;this.activePage=0;}
this.hide=function(){this.domNode.style.display="none";}
this.show=function(){this.domNode.style.display="block";}
this.init();}
PagingBar.prototype.onClick=function(evt,val){switch(val){case"<<":this.result.onPaginatorPageSelected(1);this.result.onFirstPaginatorPageChanged(1);break;case"<":this.result.onFirstPaginatorPageChanged(this.firstPaginatorPage==4?1:this.firstPaginatorPage-1);break;case">":this.result.onFirstPaginatorPageChanged(this.firstPaginatorPage+(this.firstPaginatorPage>1?1:3));break;case">>":this.result.onPaginatorPageSelected(this.pages);this.result.onFirstPaginatorPageChanged(this.pages-this.visiblePaginatorEntries+3);break;default:this.result.onPaginatorPageSelected(val);break;}}
