//var TE$ = jQuery.noConflict(true); // load jquery in mainborder layout if (!window.WIDGET) (function() { WIDGET = { initialised : false, widgetType : 'side', country : 'za', // uses code instead of id category_code : null, category : null, citySlug : null, cats :null, //glueHacks pages : {activities :'Activities', accommodation:'Accommodations'}, selected: {accommodation: null, activities: null}, changeCat : function(type){ self.selected[type] = TE$('#'+type+'Categories option:selected').val(); self.updateUrl(type); }, changeCity : function(type){ self.selected[type] = TE$('#'+type+'Cities option:selected').val(); TE$('#'+type+'Categories').attr('disabled', true); TE$.getJSON('/widgets/sidebar_pagefinder/json.php?object=changed_cats&type='+type+'&cntry='+self.country+'&city='+self.selected[type]+'&callback=?', function(data){ self.updateCats(type, data.cats); self.updateUrl(type); }); }, updateCats : function(type, data){ if(!data[type]){ self.changeCity(type); }else{ TE$('#'+type+'Categories').empty(); var o; TE$.each(data[type], function(opt, optdata) { if(optdata.slug == self.selected[type]){ o = ''; }else{ o = ''; } TE$('#'+type+'Categories').append(o); TE$('#'+type+'Categories').attr('disabled', false); }) self.updateUrl(type); } }, updateCities :function(type, data) { TE$('#'+type+'Cities').empty(); var o; TE$.each(data[type], function(key, city) { if(city.slug == self.citySlug){ o = ''; }else{ o = ''; } TE$('#'+type+'Cities').append(o); }); TE$('#'+type+'Cities').attr('disabled', false); }, updateUrl :function(type) { var page = self.pages[type]; var city = TE$('#'+type+'Cities option:selected').val(); var cat = TE$('#'+type+'Categories option:selected').val(); var url = '/'+page+'/'+self.country+'/'+city+'/'+cat; TE$('#'+type+'Go').attr('href', url); }, updateTransportLink :function(){ var cat = TE$('#transportCategories option:selected').val(); var url = '/'+cat+'/'+self.countrySlug; TE$('#transportGo').attr('href', url); }, setupEvents : function() { TE$('#transportCategories').bind('change', self.updateTransportLink); TE$('.widgetCities').bind('change', function(e){ self.changeCity(TE$(this).attr('wtype')) }); TE$('.widgetCats').bind('change', function(e){ self.changeCat(TE$(this).attr('wtype')) }); }, showLoading:function(){ TE$('#TEwidgetGo') .attr('style', 'background-position: 0 -18px;') .removeAttr('href'); }, doneLoading:function(){ TE$('#TEwidgetGo') .attr('href', self.url) .attr('style', 'background-position: 0 0;'); if(!self.isTransportCat){ TE$('#TEwidgetCities').attr('disabled', false); } }, init : function() { TE$.getJSON('/widgets/sidebar_pagefinder/json.php?object=start&cntry='+self.country+'&city='+self.citySlug+'&callback=?', function(data){ // self.cats = data.cats; // self.cities = data.cities; //todo finder self.updateCities('activities', data.cities); self.updateCats('activities',data.cats); // accom finder self.updateCities('accommodation', data.cities); self.updateCats('accommodation', data.cats); // onchange events self.setupEvents(); }); } } var self = WIDGET; })(); TE$(document).ready(function() { WIDGET.country = countryCode; WIDGET.countrySlug = countryUrlCode; WIDGET.citySlug = cityUrlCode; WIDGET.selected.activities = categoryUrlCode; WIDGET.selected.accommodation= categoryUrlCode; WIDGET.updateTransportLink(); WIDGET.init(); });