(function(a){this.defaults={script:"proxy.php",postcode:"",radius:100,brandId:"All",typeId:"All",pageNum:1,resultsPerPage:26,letters:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],letterImage:"/ui/locator-letters.png",letterSize:[21,34],listWidth:860,page:"#page-locator",actions:"#location-actions",canvasMain:"#map-main",canvasSpotlight:"#map-spotlight",list:"#location-list",hint:".search-hint",warnPostcode:"Please make sure the postcode is correct",hintType:"Enter the location type you would like to visit.",hintPostcode:"Enter the postcode you would like to search for."};this.locations={};this.fullMap={};this.query={getTypes:function(){a.get(settings.script,{brand_id:settings.brandId},function(c){var b=c.res;if(b.length===0){return false}a("#type").html("");a(".select-text").html(b[0]["store_type"]);a.each(b,function(){if(settings.typeId==this.type_id){var d='<option value="'+this.type_id+'" selected="selected">'+this.store_type+"</option>";a(".select-text").html(this.store_type)}else{var d='<option value="'+this.type_id+'">'+this.store_type+"</option>"}a("#description .content").append('<div class="scheme-front">'+this.title+"</div><p>"+this.text+"</p>");a("#type").append(d)})})},search:function(){a.get(settings.script,{postcode:settings.postcode,radius:settings.radius,brand_id:settings.brandId,type_id:settings.typeId,page_num:settings.pageNum,results_per_page:settings.resultsPerPage},function(b){locations=b.res;if(locations==false){alert("No result found for this postcode, redirecting to search page.");window.location="/locator.php"}ui.populate()})},getStoreById:function(c){var b=locations.length;for(i=0;i<=b;i++){if(locations[i]["id"]==c){return locations[i]}}}};this.map={markers:{},initialize:function(){this.object=new google.maps.Map(settings.canvasMain,{mapTypeId:google.maps.MapTypeId.ROADMAP});this.infoWindow=new google.maps.InfoWindow();this.bounds=new google.maps.LatLngBounds();this.iconSize=new google.maps.Size(settings.letterSize[0],settings.letterSize[1]);google.maps.event.addListener(map.infoWindow,"closeclick",function(){settings.list.find(".current").removeClass("current")})},center:function(){if(locations.length>1){map.object.setCenter(map.bounds.getCenter());map.object.fitBounds(map.bounds)}else{map.object.setCenter(map.bounds.getCenter());map.object.setZoom(15)}},draw:function(){a.each(locations,function(d){var b=new google.maps.LatLng(this.lat,this.lng);var c=new google.maps.Point(d*settings.letterSize[0],0);map.bounds.extend(b);map.markers[this.id]=new google.maps.Marker({position:b,icon:new google.maps.MarkerImage(settings.letterImage,map.iconSize,c),map:map.object});google.maps.event.addListener(map.markers[this.id],"click",(function(e,f){return function(){map.popup(f,e);settings.list.find(".current").removeClass("current");ui.goToPageBySequence(d);a("#"+f.id).addClass("current")}})(map.markers[this.id],this))});map.center();map.hideLoadingAnimation()},hideLoadingAnimation:function(){var b=google.maps.event.addListener(map.object,"tilesloaded",function(){if(locations.length>5){a(settings.actions).fadeIn(300)}a(".result .overlay, .result .message").fadeOut(300,function(){google.maps.event.removeListener(b)})})},popup:function(c,b){var d='<div style="width:275px; height:130px"><b>'+c.store_name+"</b><br><br>"+c.address+"<br>"+c.suburb+"<br>"+c.state+" "+c.postcode+"<br>"+c.phone+"</div>";map.infoWindow.setContent(d);map.infoWindow.open(map.object,b)}};this.spotlight={markers:{},initialize:function(){this.object=new google.maps.Map(settings.canvasSpotlight,{zoom:11,mapTypeId:google.maps.MapTypeId.ROADMAP});this.infoWindow=new google.maps.InfoWindow();this.iconSize=new google.maps.Size(settings.letterSize[0],settings.letterSize[1]);google.maps.event.addListener(spotlight.infoWindow,"closeclick",function(){settings.list.find(".current").removeClass("current")})},draw:function(c){var b=new google.maps.LatLng(c.lat,c.lng);spotlight.markers[c.id]=new google.maps.Marker({position:b,map:spotlight.object});spotlight.object.setCenter(b)}};this.ui={populate:function(){map.initialize();map.draw();a.each(locations,function(c){var b='<div class="letter">'+settings.letters[c]+"</div><div><b>"+this.store_name+"</b></div><div>"+this.address+" "+this.suburb+" "+this.postcode+" "+this.state+"<div><br><div><b>Phone:</b> "+this.phone+"</div><div><b>Distance:</b> "+this.distance+'km</div><br><div><a href="#">Get Directions</a></div>';var d=a("<li></li>").attr("id",this.id).html(b);settings.list.find("ul").append(d)});ui.bindList()},bindList:function(){settings.list.delegate("li","click",function(){var b=settings.list.find(".current").attr("id");var d=a(this).attr("id");if(b==d){return false}var c=query.getStoreById(d);settings.list.find("li").attr("class","");a("#"+c.id).addClass("current");map.object.panTo(new google.maps.LatLng(c.lat,c.lng));map.popup(c,map.markers[c.id])});settings.list.delegate("a","click",function(){var c=a(this).parents("li").attr("id");var b=query.getStoreById(c);a(".direction .name").html(b.store_name);a(".direction .address").html(b.address+", "+b.suburb);a(".direction .state").html(b.state+" "+b.postcode);a(".direction .phone").html(b.phone);a(settings.canvasMain).hide();a(settings.canvasSpotlight).show();spotlight.initialize();spotlight.draw(b);a(settings.actions).hide();a(".result .content").slideUp();a(".wrapper .search").hide();a(".direction").slideDown()})},bindIndex:function(){a(".submit").click(function(){var c=a(this).parents("form");var b=c.find("#postcode").val();if(b.length!==4){alert(settings.warnPostcode);return false}c.submit()});a("#location-field").mouseover(function(){if(settings.hint.hasClass("error")){return false}if(settings.hint.find(".arrow").css("margin-left")==="480px"){settings.hint.find(".arrow").animate({marginLeft:"24px"},500);settings.hint.find(".message").html(settings.hintType)}});a("#postcode-field").mouseover(function(){if(settings.hint.hasClass("error")){return false}if(settings.hint.find(".arrow").css("margin-left")==="24px"){settings.hint.find(".arrow").animate({marginLeft:"480px"},500);settings.hint.find(".message").html(settings.hintPostcode)}})},bindResult:function(){a(settings.actions+" .left").click(function(){var b=ui.getCurrentPage();if(b!==1&&(b==parseInt(b))){ui.goToPage(b-1)}});a(settings.actions+" .right").click(function(){var c=ui.getCurrentPage();var b=ui.totalPages();if(c!==b&&(c==parseInt(c))){ui.goToPage(c+1)}});a(".result .print").click(function(){window.print()});a(".direction .actions .back").click(function(){a(".result .content").slideDown(function(){if(locations.length>5){a(settings.actions).fadeIn()}});a(".wrapper .search").show();a(".direction").slideUp();a(settings.canvasMain).show();a(settings.canvasSpotlight).hide()});a(".direction-address input").focus(function(){if(a(this).val()==="Enter your address, suburb and postcode"){a(this).val("")}});a(".direction-address input").focusout(function(){if(a(this).val()===""){a(this).val("Enter your address, suburb and postcode")}});a(".direction-address .get").click(function(){var f=a(".direction-address input").val();var e=a(".direction .address").html()+" "+a(".direction .state").html();var b=new google.maps.DirectionsService();var d=new google.maps.DirectionsRenderer();d.setMap(spotlight.object);var c={origin:f,destination:e,travelMode:google.maps.DirectionsTravelMode.DRIVING};b.route(c,function(g,h){if(h==google.maps.DirectionsStatus.OK){d.setDirections(g)}})});a(".direction .actions .print").click(function(){var d=a(".direction-address input").val();var c=a(".direction .address").html()+" "+a(".direction .state").html();var b="http://maps.google.com/maps?saddr="+d+"&daddr="+c;window.open(b)})},totalPages:function(){var b=settings.list.find("li").size()-1;return Math.floor(b/5)+1},currentLocation:function(){var b=settings.list.find("ul").css("left");if(b==="auto"){b="0px"}return parseInt(b)},getCurrentPage:function(){var b=0-ui.currentLocation();return b/settings.listWidth+1},getOffsetByPage:function(b){return 0-((parseInt(b)-1)*settings.listWidth)},goToPage:function(b){var c=ui.getOffsetByPage(b);settings.list.find("ul").animate({left:c+"px"})},goToPageBySequence:function(b){var c=Math.floor(b/5)+1;ui.goToPage(c)}};a.locator=function(b){settings=a.extend({},defaults,b);settings.canvasMain=a(settings.canvasMain)[0];settings.canvasSpotlight=a(settings.canvasSpotlight)[0];settings.list=a(settings.list);settings.hint=a(settings.hint);if(a(settings.page).length===0){return false}query.getTypes();ui.bindIndex();if(settings.postcode.length===4){ui.bindResult();query.search()}}})(jQuery);
