Advertisement
Guest User

Untitled

a guest
Jan 28th, 2011
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. * jQuery plugin: viaFunda - v2.0.0
  3. * (c) 2010-2011 funda real estate <jan@funda.nl> - http://www.funda.nl
  4. *
  5. * ViaFunda plugin is verantwoordelijk voor het tonen van de lijst met provincies en invoerdingen onderaan de pagina's
  6. *
  7. * Werking:
  8. * - Before submit moet 'options.controls.magicElement' gevuld worden met
  9. *   'soortAanbodTypeId | (pipe) waarde' in het zichtbare element
  10. *   b.v. 10|amsterdam voor koopaanbod in Amsterdam
  11. */
  12. (function ($) {
  13.     $.fn.extend({
  14.         viaFunda: function (opts){
  15.             return this.each(function () {         
  16.                 var options = {
  17.                     controls: {
  18.                         type: $('#dropSubType'),
  19.                         vrijeInvoer: $('#ppcplaats'),
  20.                         landen: $('#land'),
  21.                         horecaRegios: $('#horegio'),
  22.                         provincies: $('#provincie'),
  23.                         landelijkRegios: $('#landelijk'),
  24.                         magicElement: $('#viaSearch'),
  25.                         form: $(this).closest('form')
  26.                     },
  27.                     events: {
  28.                         onTypeChanged: function(aanbod){ // aanbod (string)
  29.                             // dit event kan gebruikt worden om bv zoekbox te veranderen                       
  30.                         }
  31.                     }
  32.                 };
  33.                
  34.                 // hier slaan we op welk id in options.controls.types matcht met welk echt type
  35.                 var typeEnum = {
  36.                     wonen: {
  37.                         koop: 10,
  38.                         huur: 11,
  39.                         nieuwbouw: 12,
  40.                         recreatie: 13,
  41.                         europe: 14
  42.                     },
  43.                     business: {
  44.                         kantoor: 20,
  45.                         bedrijfshal: 21,
  46.                         winkel: 22,
  47.                         horeca: 23,
  48.                         bouwgrond: 24,
  49.                         overige: 25
  50.                     },
  51.                     landelijk: {
  52.                         woningen: 111,
  53.                         agrarischeBedrijven: 205,
  54.                         losseGrond: 102
  55.                     }
  56.                 };
  57.                        
  58.                 // gebruiker kan de options overschijven
  59.                 $.extend(true, options, opts);
  60.                            
  61.                 // control magic
  62.                 var initControls = function () {
  63.                    
  64.                 };
  65.                
  66.                 // events die we willen afhandelen
  67.                 var initEvents = function () {
  68.                     options.controls.type.change(typeDropdownChanged).change();
  69.                     options.controls.form.submit(submitForm);
  70.                 };
  71.                
  72.                 // event - dropdownlist is veranderd
  73.                 var typeDropdownChanged = function (ev) {
  74.                     var selectedType = Number(options.controls.type.val());
  75.                    
  76.                     var ctrl;
  77.                    
  78.                     switch(selectedType) {
  79.                         case typeEnum.wonen.europe:
  80.                             ctrl = options.controls.landen;
  81.                             break;
  82.                            
  83.                         case typeEnum.business.overige:
  84.                         case typeEnum.business.bouwgrond:
  85.                             ctrl = options.controls.provincies;
  86.                             break;
  87.                        
  88.                         case typeEnum.business.horeca:
  89.                             ctrl = options.controls.horecaRegios;
  90.                             break;
  91.                            
  92.                         case typeEnum.landelijk.agrarischeBedrijven:
  93.                         case typeEnum.landelijk.woningen:
  94.                         case typeEnum.landelijk.losseGrond:
  95.                             ctrl = options.controls.landelijkRegios;
  96.                             break;
  97.                            
  98.                         default:
  99.                             ctrl = options.controls.vrijeInvoer;
  100.                             break;
  101.                     }
  102.                    
  103.                     switchType(ctrl);
  104.                     onTypeChangedCallback(selectedType);
  105.                 };
  106.                
  107.                 var switchType = function (ctrl) { // ctrl is het control dat getoond moet worden
  108.                     options.controls.vrijeInvoer.hide();
  109.                     options.controls.landen.hide();
  110.                     options.controls.horecaRegios.hide();
  111.                     options.controls.provincies.hide();
  112.                     options.controls.landelijkRegios.hide();
  113.                    
  114.                     ctrl.show();
  115.                 };
  116.                
  117.                 // event - form wordt gesubmit
  118.                 var submitForm = function (ev) {
  119.                     // hier gaan we magicElement setten
  120.                     var key = options.controls.type.val();
  121.                     key += '|'; // pipes; echt classy
  122.                    
  123.                     // zoek op welk input element visible is
  124.                     var visibleElement;
  125.                     $([ options.controls.vrijeInvoer, options.controls.landen, options.controls.horecaRegios, options.controls.provincies, options.controls.landelijkRegios ]).each(function (ix, ele) {
  126.                         if(ele.is(':visible')) {
  127.                             visibleElement = ele;
  128.                         }
  129.                     });
  130.                     key += visibleElement.val();
  131.                    
  132.                     // en doe some magic
  133.                     options.controls.magicElement.val(key);
  134.                 };
  135.                
  136.                 // interne wrapper om 'onTypeChanged' heen; waar we het type als string gaan zoeken
  137.                 var onTypeChangedCallback = function (val) {
  138.                     for(var categorie in typeEnum) {
  139.                         for (var type in typeEnum[categorie]) {
  140.                             if(typeEnum[categorie][type] === val) {
  141.                                 options.events.onTypeChanged(type);
  142.                                 return;
  143.                             }
  144.                         }
  145.                     }
  146.                 };
  147.                
  148.                 // initialiseer plugin
  149.                 initControls();
  150.                 initEvents();
  151.             });
  152.         }
  153.     });
  154. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement