Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * jQuery plugin: viaFunda - v2.0.0
- * (c) 2010-2011 funda real estate <jan@funda.nl> - http://www.funda.nl
- *
- * ViaFunda plugin is verantwoordelijk voor het tonen van de lijst met provincies en invoerdingen onderaan de pagina's
- *
- * Werking:
- * - Before submit moet 'options.controls.magicElement' gevuld worden met
- * 'soortAanbodTypeId | (pipe) waarde' in het zichtbare element
- * b.v. 10|amsterdam voor koopaanbod in Amsterdam
- */
- (function ($) {
- $.fn.extend({
- viaFunda: function (opts){
- return this.each(function () {
- var options = {
- controls: {
- type: $('#dropSubType'),
- vrijeInvoer: $('#ppcplaats'),
- landen: $('#land'),
- horecaRegios: $('#horegio'),
- provincies: $('#provincie'),
- landelijkRegios: $('#landelijk'),
- magicElement: $('#viaSearch'),
- form: $(this).closest('form')
- },
- events: {
- onTypeChanged: function(aanbod){ // aanbod (string)
- // dit event kan gebruikt worden om bv zoekbox te veranderen
- }
- }
- };
- // hier slaan we op welk id in options.controls.types matcht met welk echt type
- var typeEnum = {
- wonen: {
- koop: 10,
- huur: 11,
- nieuwbouw: 12,
- recreatie: 13,
- europe: 14
- },
- business: {
- kantoor: 20,
- bedrijfshal: 21,
- winkel: 22,
- horeca: 23,
- bouwgrond: 24,
- overige: 25
- },
- landelijk: {
- woningen: 111,
- agrarischeBedrijven: 205,
- losseGrond: 102
- }
- };
- // gebruiker kan de options overschijven
- $.extend(true, options, opts);
- // control magic
- var initControls = function () {
- };
- // events die we willen afhandelen
- var initEvents = function () {
- options.controls.type.change(typeDropdownChanged).change();
- options.controls.form.submit(submitForm);
- };
- // event - dropdownlist is veranderd
- var typeDropdownChanged = function (ev) {
- var selectedType = Number(options.controls.type.val());
- var ctrl;
- switch(selectedType) {
- case typeEnum.wonen.europe:
- ctrl = options.controls.landen;
- break;
- case typeEnum.business.overige:
- case typeEnum.business.bouwgrond:
- ctrl = options.controls.provincies;
- break;
- case typeEnum.business.horeca:
- ctrl = options.controls.horecaRegios;
- break;
- case typeEnum.landelijk.agrarischeBedrijven:
- case typeEnum.landelijk.woningen:
- case typeEnum.landelijk.losseGrond:
- ctrl = options.controls.landelijkRegios;
- break;
- default:
- ctrl = options.controls.vrijeInvoer;
- break;
- }
- switchType(ctrl);
- onTypeChangedCallback(selectedType);
- };
- var switchType = function (ctrl) { // ctrl is het control dat getoond moet worden
- options.controls.vrijeInvoer.hide();
- options.controls.landen.hide();
- options.controls.horecaRegios.hide();
- options.controls.provincies.hide();
- options.controls.landelijkRegios.hide();
- ctrl.show();
- };
- // event - form wordt gesubmit
- var submitForm = function (ev) {
- // hier gaan we magicElement setten
- var key = options.controls.type.val();
- key += '|'; // pipes; echt classy
- // zoek op welk input element visible is
- var visibleElement;
- $([ options.controls.vrijeInvoer, options.controls.landen, options.controls.horecaRegios, options.controls.provincies, options.controls.landelijkRegios ]).each(function (ix, ele) {
- if(ele.is(':visible')) {
- visibleElement = ele;
- }
- });
- key += visibleElement.val();
- // en doe some magic
- options.controls.magicElement.val(key);
- };
- // interne wrapper om 'onTypeChanged' heen; waar we het type als string gaan zoeken
- var onTypeChangedCallback = function (val) {
- for(var categorie in typeEnum) {
- for (var type in typeEnum[categorie]) {
- if(typeEnum[categorie][type] === val) {
- options.events.onTypeChanged(type);
- return;
- }
- }
- }
- };
- // initialiseer plugin
- initControls();
- initEvents();
- });
- }
- });
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement