text: /* ==========================================================
   * bootstrap-formhelpers-countries.js
   * https://github.com/vlamanna/BootstrapFormHelpers
   * ==========================================================
   * Copyright 2012 Vincent Lamanna
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   * ========================================================== */
  
  +function ($) {
  
    'use strict';
  
  
    /* COUNTRIES CLASS DEFINITION
     * ====================== */
  
    var BFHCountries = function (element, options) {
      this.options = $.extend({}, $.fn.bfhcountries.defaults, options);
      this.$element = $(element);
  
      if (this.$element.is('select')) {
        this.addCountries();
      }
  
      if (this.$element.hasClass('bfh-selectbox')) {
        this.addBootstrapCountries();
      }
  
      if (this.$element.is('span')) {
        this.displayCountry();
      }
    };
  
    BFHCountries.prototype = {
  
      constructor: BFHCountries,
  
      getCountries: function() {
        var country,
            countries;
  
        if (this.options.available) {
          if (typeof this.options.available === 'string') {
            countries = [];
    
            this.options.available = this.options.available.split(',');
    
            for (country in BFHCountriesList) {
              if (BFHCountriesList.hasOwnProperty(country)) {
                if ($.inArray(country, this.options.available) >= 0) {
                  countries[country] = BFHCountriesList[country];
                }
              }
            }
          } else {
            countries = this.options.available;
          }
  
          return countries;
        } else {
          return BFHCountriesList;
        }
      },
  
      addCountries: function () {
        var value,
            country,
            countries;
  
        value = this.options.country;
        countries = this.getCountries();
  
        this.$element.html('');
  
        if (this.options.blank === true) {
          this.$element.append('<option name = "country" value=""></option>');
        }
  
        for (country in countries) {
          if (countries.hasOwnProperty(country)) {
            this.$element.append('<option name = "country" value="' + country + '">' + countries[country] + '</option>');
          }
        }
  
        this.$element.val(value);
      },
  
      addBootstrapCountries: function() {
        var $input,
            $toggle,
            $options,
            value,
            country,
            countries;
  
        value = this.options.country;
        $input = this.$element.find('input[type="hidden"]');
        $toggle = this.$element.find('.bfh-selectbox-option');
        $options = this.$element.find('[role=option]');
        countries = this.getCountries();
  
        $options.html('');
  
        if (this.options.blank === true) {
          $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>');
        }
  
        for (country in countries) {
          if (countries.hasOwnProperty(country)) {
            if (this.options.flags === true) {
              $options.append('<li><a tabindex="-1" href="#" data-option="' + country + '"><i class="glyphicon bfh-flag-' + country + '"></i>' + countries[country] + '</a></li>');
            } else {
              $options.append('<li><a tabindex="-1" href="#" data-option="' + country + '">' + countries[country] + '</a></li>');
            }
          }
        }
  
        this.$element.val(value);
      },
  
      displayCountry: function () {
        var value;
  
        value = this.options.country;
  
        if (this.options.flags === true) {
          this.$element.html('<i class="glyphicon bfh-flag-' + value + '"></i> ' + BFHCountriesList[value]);
        } else {
          this.$element.html(BFHCountriesList[value]);
        }
      }
  
    };
  
  
    /* COUNTRY PLUGIN DEFINITION
     * ======================= */
  
    var old = $.fn.bfhcountries;
  
    $.fn.bfhcountries = function (option) {
      return this.each(function () {
        var $this,
            data,
            options;
  
        $this = $(this);
        data = $this.data('bfhcountries');
        options = typeof option === 'object' && option;
  
        if (!data) {
          $this.data('bfhcountries', (data = new BFHCountries(this, options)));
        }
        if (typeof option === 'string') {
          data[option].call($this);
        }
      });
    };
  
    $.fn.bfhcountries.Constructor = BFHCountries;
  
    $.fn.bfhcountries.defaults = {
      country: '',
      available: '',
      flags: false,
      blank: true
    };
  
  
    /* COUNTRY NO CONFLICT
     * ========================== */
  
    $.fn.bfhcountries.noConflict = function () {
      $.fn.bfhcountries = old;
      return this;
    };
  
  
    /* COUNTRY DATA-API
     * ============== */
  
    $(document).ready( function () {
      $('form select.bfh-countries, span.bfh-countries, div.bfh-countries').each(function () {
        var $countries;
  
        $countries = $(this);
  
        if ($countries.hasClass('bfh-selectbox')) {
          $countries.bfhselectbox($countries.data());
        }
        $countries.bfhcountries($countries.data());
      });
    });
  
  }(window.jQuery);
  