/*! Chinese region picker for jQuery plugin - v0.0.4 - 2013-12-13 * https://github.com/xixilive/chineserp-jquery * Copyright (c) 2013 xixilive; Licensed MIT */ !function(a,b){"use strict";var c=function(c,d){this.el=c,this.options=a.extend({remote:"",picked:"",visible:10,animate:0},d||{}),this.picker=null,this.options.picked=String(this.options.picked),this.options.visible=parseInt(this.options.visible,10)||10,this.options.animate=parseInt(this.options.animate,10)||0,this.data={regions:[],collections:[]},this.el.on("initializing.rp",a.proxy(this._onInitializing,this)),this.el.on("initialized.rp",a.proxy(this._onInitialized,this)),a(document).on("keydown",a.proxy(this._onCloserClick,this)),new b.RegionPicker({remote:this.options.remote,initialized:a.proxy(this._preInitialize,this)})};c.prototype={constructor:c,_preInitialize:function(b){this.picker=b,this.el.trigger("initializing.rp",[this]),this.picker.pick(this.options.picked,a.proxy(function(a,b){this.data.regions=a,this.data.collections=b,this.el.trigger("initialized.rp",[this])},this))},_onInitializing:function(){this.renderer=a('').append('×').append('
').appendTo("body"),this.renderer.on("rendered",".region-list",a.proxy(this._onListRendered,this)),this.renderer.on("reveal",a.proxy(this._render,this)),this.renderer.on("picked",".region-list li",a.proxy(this._onItemPicked,this)),this.renderer.on("click",".region-list li",a.proxy(this._onItemClick,this)),this.renderer.on("click",".region-picker-closer",a.proxy(this._onCloserClick,this))},_onInitialized:function(){this.el.on("click",a.proxy(this._onClick,this))},_onClick:function(a){if(a.preventDefault(),"none"===this.renderer.css("display")){var b=this.el.offset();this.renderer.css({top:b.top+this.el.outerHeight(!0),left:b.left}).fadeIn(this.options.animate).trigger("reveal")}},_onItemClick:function(b){var c=a(b.currentTarget),d=c.attr("data-id");b.preventDefault(),this.el.trigger("loading.rp",this),this.picker.pick(d,a.proxy(function(a,c){this.data.regions=a,this.data.collections=c,this.el.trigger("loaded.rp",[this.data,this]);var e=a[a.length-1]&&d===a[a.length-1].i;e?(this.el.trigger("picked.rp",[a,this]),this._onCloserClick(b)):this.renderer.trigger("reveal")},this))},_onItemPicked:function(a,b,c,d){a.stopPropagation();var e=c-this.options.visible+1;e>=0&&b.animate({scrollTop:(e+1)*d},Math.max(1.5*this.options.animate,200))},_onCloserClick:function(a){("click"===a.type||"keydown"===a.type&&27===a.which)&&(a.stopPropagation(),"none"!==this.renderer.css("display")&&this.renderer.fadeOut(this.options.animate))},_onListRendered:function(b,c){var d=a(b.currentTarget),e=a("li:first",d).outerHeight(!0);d.height(this.options.visible*e),a("li",d).each(function(b){a(this).attr("data-id")===c.i&&a(this).addClass("picked").trigger("picked",[d,b,e])})},_render:function(){for(var b=a(".regions",this.renderer).empty(),c=0;c').append(this._renderItems(this.data.collections[c])).appendTo(b).trigger("rendered",[this.data.regions[c]])},_renderItems:function(b){for(var c,d=[],e=0;e'+c.n+"").fadeIn(this.options.animate));return d}},a.fn.regionPicker=function(b){return this.each(function(){var d=a(this),e=d.data("regionpicker");if(!e){var f=a.extend(d.data(),b||{});d.data("regionpicker",e=new c(d,f))}})}}(jQuery,ChineseRegion);