text:
jQuery.webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
	"use strict";
	var curCfg;
	var formcfg = $.webshims.formcfg;

	var stopPropagation = function(e){
		e.stopImmediatePropagation(e);
	};
	var createFormat = function(name){
		if(!curCfg.patterns[name+'Obj']){
			var obj = {};
			$.each(curCfg.patterns[name].split(curCfg[name+'Format']), function(i, name){
				obj[name] = i;
			});
			curCfg.patterns[name+'Obj'] = obj;
		}
	};
	var splitInputs = {
		date: {
			_create: function(){
				var obj = {
					splits: [$('<input type="text" class="yy" size="4" maxlength />')[0], $('<input type="text" class="mm" maxlength="2" size="2" />')[0], $('<input type="text" class="dd ws-spin" maxlength="2" size="2" />')[0]]
				};
				obj.elements = [obj.splits[0], $('')[0], obj.splits[1], $('')[0], obj.splits[2]];
				return obj;
			},
			sort: function(element){
				createFormat('d');
				var i = 0;
				var seperators = $('.ws-input-seperator', element).html(curCfg.dFormat);
				var inputs = $('input', element);
				$.each(curCfg.patterns.dObj, function(name, value){
					var input = inputs.filter('.'+ name);
					if(input[0]){

						input.appendTo(element);
						if(i < seperators.length){
							seperators.eq(i).insertAfter(input);
						}
						i++;
					}
				});
			}
		},
		month: {
			_create: function(){
				var obj = {
					splits: [$('<input type="text" class="yy" size="4" />')[0], $('<input type="text" class="mm ws-spin" />')[0]]
				};
				obj.elements = [obj.splits[0], $('')[0], obj.splits[1]];
				return obj;
			},
			sort: function(element){
				var seperator = $('.ws-input-seperator', element).html(curCfg.dFormat);
				var mm = $('input.mm', element);
				var action;
				if(curCfg.date.showMonthAfterYear){
					mm.appendTo(element);
					action = 'insertBefore';
				} else {
					mm.prependTo(element);
					action = 'insertAfter';
				}
				seperator[action](mm);
			}
		}
	};
	var labelWidth = (function(){
		var getId = function(){
			return webshims.getID(this);
		};
		return function(element, labels, noFocus){
			$(element).attr({'aria-labelledby': labels.map(getId).get().join(' ')});
			if(!noFocus){
				labels.on('click', function(e){
					element.getShadowFocusElement().focus();
					e.preventDefault();
					return false;
				});
			}
		};
	})();
	var addZero = function(val){
		if(!val){return "";}
		val = val+'';
		return val.length == 1 ? '0'+val : val;
	};

	(function(){
		var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
		formcfg.de = {
			numberFormat: {
				",": ".",
				".": ","
			},
			timeSigns: ":. ",
			numberSigns: ',',
			dateSigns: '.',
			dFormat: ".",
			patterns: {
				d: "dd.mm.yy"
			},
			month:  {
				currentText: 'Aktueller Monat'
			},
			date: {
				close: 'schließen',
				clear: 'Löschen',
				prevText: 'Zurück',
				nextText: 'Vor',
				currentText: 'Heute',
				monthNames: ['Januar','Februar','März','April','Mai','Juni',
				'Juli','August','September','Oktober','November','Dezember'],
				monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
				'Jul','Aug','Sep','Okt','Nov','Dez'],
				dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
				dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
				dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
				weekHeader: 'KW',
				firstDay: 1,
				isRTL: false,
				showMonthAfterYear: false,
				yearSuffix: ''
			}
		};

		formcfg.en = {
			numberFormat: {
				".": ".",
				",": ","
			},
			numberSigns: '.',
			dateSigns: '/',
			timeSigns: ":. ",
			dFormat: "/",
			patterns: {
				d: "mm/dd/yy"
			},
			month:  {
				currentText: 'This month'
			},
			date: {
				"closeText": "Done",
				clear: 'Clear',
				"prevText": "Prev",
				"nextText": "Next",
				"currentText": "Today",
				"monthNames": ["January","February","March","April","May","June","July","August","September","October","November","December"],
				"monthNamesShort": ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],
				"dayNames": ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
				"dayNamesShort": ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],
				"dayNamesMin": ["Su","Mo","Tu","We","Th","Fr","Sa"],
				"weekHeader": "Wk",
				"firstDay": 0,
				"isRTL": false,
				"showMonthAfterYear": false,
				"yearSuffix": ""
			}
		};

		formcfg['en-US'] = formcfg['en-US'] || formcfg['en'];
		formcfg[''] = formcfg[''] || formcfg['en-US'];
		curCfg = formcfg[''];

		var createMonthKeys = function(langCfg){
			if(!langCfg.date.monthkeys){
				var create = function(i, name){
					var strNum;
					var num = i + 1;
					strNum = (num < 10) ? '0'+num : ''+num;
					langCfg.date.monthkeys[num] = strNum;
					langCfg.date.monthkeys[name] = strNum;
					langCfg.date.monthkeys[name.toLowerCase()] = strNum;
				};
				langCfg.date.monthkeys = {};
				langCfg.date.monthDigits = monthDigits;
				langCfg.numberSigns += '-';
				$.each(langCfg.date.monthNames, create);
				$.each(langCfg.date.monthNamesShort, create);
			}
		};

		createMonthKeys(curCfg);

		$.webshims.ready('dom-extend', function(){
			$.webshims.activeLang({
				register: 'form-core',
				callback: function(){
					$.each(arguments, function(i, val){
						if(formcfg[val]){
							curCfg = formcfg[val];
							createMonthKeys(curCfg);
							$(document).triggerHandler('wslocalechange');
							return false;
						}
					});
				}
			});
		});
	})();

	(function(){

		var mousePress = function(e){
			$(this)[e.type == 'mousepressstart' ? 'addClass' : 'removeClass']('mousepress-ui');
		};

		var retDefault = function(val, def){
			if(!(typeof val == 'number' || (val && val == val * 1))){
				return def;
			}
			return val * 1;
		};

		var createOpts = ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'value'];

		var formatVal = {
			number: function(val){
				return (val+'').replace(/\,/g, '').replace(/\./, curCfg.numberFormat['.']);
			},
			time: function(val){
				return val;
			},
			//todo empty val for month/split
			month: function(val, options){
				var names;
				var p = val.split('-');
				if(p[0] && p[1]){
					names = curCfg.date[options.formatMonthNames] || curCfg.date[options.monthNames] || curCfg.date.monthNames;
					p[1] = names[(p[1] * 1) - 1];
					if(options && options.splitInput){
						val = [p[0] || '', p[1] || ''];
					} else if(p[1]){
						val = curCfg.date.showMonthAfterYear ? p.join(' ') : p[1]+' '+p[0];
					}
				}
				return val;
			},
			date: function(val, opts){
				var p = (val+'').split('-');
				if(p[2] && p[1] && p[0]){
					if(opts && opts.splitInput){
						val = p;
					} else {
						val = curCfg.patterns.d.replace('yy', p[0] || '');
						val = val.replace('mm', p[1] || '');
						val = val.replace('dd', p[2] || '');
					}
				} else if(opts && opts.splitInput){
					val = [p[0] || '', p[1] || '', p[2] || ''];
				}

				return val;
			}
		};

		var parseVal = {
			number: function(val){
				return (val+'').replace(curCfg.numberFormat[','], '').replace(curCfg.numberFormat['.'], '.');
			},
			time: function(val){
				return val;
			},
			month: function(val, opts){

				var p = (!opts.splitInput) ? val.trim().split(/[\.\s-\/\\]+/) : val;

				if(p.length == 2){
					p[0] = curCfg.date.monthkeys[p[0]] || p[0];
					p[1] = curCfg.date.monthkeys[p[1]] || p[1];
					if(p[1].length == 2){
						val = p[0]+'-'+p[1];
					} else if(p[0].length == 2){
						val = p[1]+'-'+p[0];
					} else {
						val = '';
					}
				} else if(opts.splitInput) {
					val = '';
				}
				return val;
			},
			date: function(val, opts){
				createFormat('d');
				var i;
				var obj;
				if(opts.splitInput){
					obj = {yy: 0, mm: 1, dd: 2};
				} else {
					obj = curCfg.patterns.dObj;
					val = val.split(curCfg.dFormat);
				}

				return (val.length == 3 && val[0] && val[1] && val[2]) ?
					([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-') :
					''
				;
			}
		};

		var steps = {
			number: {
				step: 1
			},
			time: {
				step: 60
			},
			month: {
				step: 1,
				start: new Date()
			},
			date: {
				step: 1,
				start: new Date()
			}
		};

		var placeholderFormat = {
			date: function(val, opts){
				var hintValue = (val || '').split('-');
				if(hintValue.length == 3){
					hintValue = opts.splitInput ?
						hintValue :
						curCfg.patterns.d.replace('yy', hintValue[0]).replace('mm', hintValue[1]).replace('dd', hintValue[2]);
				} else {
					hintValue = opts.splitInput ?
						[val, val, val] :
						val;
				}
				return hintValue;
			},
			month: function(val, opts){
				var hintValue = (val || '').split('-');

				if(hintValue.length == 2){
					hintValue = opts.splitInput ?
						hintValue :
						curCfg.patterns.d.replace('yy', hintValue[0]).replace('mm', hintValue[1]);
				} else {
					hintValue = opts.splitInput ?
						[val, val] :
						val;
				}
				return hintValue;
			}
		};

		var createHelper = (function(){
			var types = {};
			return function(type){
				var input;
				if(!types[type]){
					input = $('<input type="'+type+'" />');
					types[type] = {
						asNumber: function(val){
							var type = (typeof val == 'object') ? 'valueAsDate' : 'value';
							return input.prop(type, val).prop('valueAsNumber');
						},
						asValue: function(val){
							var type = (typeof val == 'object') ? 'valueAsDate' : 'valueAsNumber';
							return input.prop(type, val).prop('value');
						}
					};
				}
				return types[type];
			};
		})();

		steps.range = steps.number;

		var spinBtnProto = {
			_create: function(){
				var i;
				var o = this.options;
				var helper = createHelper(o.type);
				this.type = o.type;
				this.orig = o.orig;

				this.elemHelper = $('<input type="'+ this.type+'" />');
				this.asNumber = helper.asNumber;
				this.asValue = helper.asValue;

				this.buttonWrapper = $('')
					.insertAfter(this.element)
				;

				if(o.splitInput){
					this._addSplitInputs();
				} else {
					this.inputElements = this.element;
				}

				this.options.containerElements.push(this.buttonWrapper[0]);

				if(typeof steps[this.type].start == 'object'){
					steps[this.type].start = this.asNumber(steps[this.type].start);
				}

				for(i = 0; i < createOpts.length; i++){
					this[createOpts[i]](o[createOpts[i]]);
				}

				this.element.data('wsspinner', this);

				this.addBindings();

				if(!o.min && typeof o.relMin == 'number'){
					o.min = this.asValue(this.getRelNumber(o.relMin));
					$.prop(this.orig, 'min', o.min);
				}

				if(!o.max && typeof o.relMax == 'number'){
					o.max = this.asValue(this.getRelNumber(o.relMax));
					$.prop(this.orig, 'max', o.max);
				}

				this._init = true;
			},
			_addSplitInputs: function(){
				if(!this.inputElements){
					var create = splitInputs[this.type]._create();
					this.splits = create.splits;
					this.inputElements = $(create.elements).prependTo(this.element).filter('input');
				}
			},
			parseValue: function(){
				var value = this.inputElements.map(function(){
					return $.prop(this, 'value');
				}).get();
				if(!this.options.splitInput){
					value = value[0];
				}
				return parseVal[this.type](value, this.options);
			},
			formatValue: function(val, noSplit){
				return formatVal[this.type](val, noSplit === false ? false : this.options);
			},
			placeholder: function(val){
				var options = this.options;
				options.placeholder = val;
				var placeholder = val;
				if(placeholderFormat[this.type]){
					placeholder = placeholderFormat[this.type](val, this.options);
				}
				if(options.splitInput && typeof placeholder == 'object'){
					$.each(this.splits, function(i, elem){
						$.prop(elem, 'placeholder', placeholder[i]);
					});
				} else {
					this.element.prop('placeholder', placeholder);
				}
			},
			getRelNumber: function(rel){
				var start = steps[this.type].start || 0;
				if(rel){
					start += rel;
				}
				return start;
			},
			addZero: addZero,
			_setStartInRange: function(){
				var start = this.getRelNumber(this.options.relDefaultValue);
				if(!isNaN(this.minAsNumber) && start < this.minAsNumber){
					start = this.minAsNumber;
				} else if(!isNaN(this.maxAsNumber) && start > this.maxAsNumber){
					start = this.maxAsNumber;
				}
				this.elemHelper.prop('valueAsNumber', start);
				this.options.defValue = this.elemHelper.prop('value');

			},
			reorderInputs: function(){
				if(splitInputs[this.type]){
					var element = this.element;
					splitInputs[this.type].sort(element);
					setTimeout(function(){
						var data = webshims.data(element);
						if(data && data.shadowData){
							data.shadowData.shadowFocusElement = element.find('input')[0] || element[0];
						}
					}, 9);
				}
			},
			value: function(val){
				this.valueAsNumber = this.asNumber(val);
				this.options.value = val;
				if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
					this._setStartInRange();
				} else {
					this.elemHelper.prop('value', val);
					this.options.defValue = "";
				}

				val = formatVal[this.type](val, this.options);
				if(this.options.splitInput){

					$.each(this.splits, function(i, elem){
						$.prop(elem, 'value', val[i]);
					});
				} else {
					this.element.prop('value', val);
				}

				this._propertyChange('value');
			},
			initDataList: function(){
				var listTimer;
				var that = this;
				var updateList = function(){
					$(that.orig)
						.jProp('list')
						.off('updateDatalist', updateList)
						.on('updateDatalist', updateList)
					;
					clearTimeout(listTimer);
					listTimer = setTimeout(function(){
						if(that.list){
							that.list();
						}
					}, 9);

				};

				$(this.orig).onTrigger('listdatalistchange', updateList);
			},
			getOptions: function(){
				var options = {};
				var datalist = $(this.orig).jProp('list');
				datalist.find('option').each(function(){
					options[$.prop(this, 'value')] = $.prop(this, 'label');
				});
				return [options, datalist.data('label')];
			},
			list: function(val){
				if(this.type == 'number' || this.type == 'time'){
					this.element.attr('list', $.attr(this.orig, 'list'));
				}
				this.options.list = val;
				this._propertyChange('list');
			},
			_propertyChange: $.noop,
			tabindex: function(val){
				this.options.tabindex = val;
				this.inputElements.prop('tabindex', this.options.tabindex);
			},
			title: function(val){
				this.options.title = val;
				this.element.prop('title', this.options.title);
			},

			min: function(val){
				this.elemHelper.prop('min', val);
				this.minAsNumber = this.asNumber(val);
				if(this.valueAsNumber != null && isNaN(this.valueAsNumber)){
					this._setStartInRange();
				}
				this.options.min = val;
				this._propertyChange('min');
			},
			max: function(val){
				this.elemHelper.prop('max', val);
				this.maxAsNumber = this.asNumber(val);
				if(this.valueAsNumber != null && isNaN(this.valueAsNumber)){
					this._setStartInRange();
				}
				this.options.max = val;
				this._propertyChange('max');
			},
			step: function(val){
				var defStep = steps[this.type];
				this.options.step = val;
				this.elemHelper.prop('step', retDefault(val, defStep.step));
			},
			addBindings: function(){
				var isFocused;

				var that = this;
				var o = this.options;

				var eventTimer = (function(){
					var events = {};
					return {
						init: function(name, curVal, fn){
							if(!events[name]){
								events[name] = {fn: fn};
								$(that.orig).on(name, function(){
									events[name].val = $.prop(that.orig, 'value');
								});
							}
							events[name].val = curVal;
						},
						call: function(name, val){
							if(events[name] && events[name].val != val){
								clearTimeout(events[name].timer);
								events[name].val = val;
								events[name].timer = setTimeout(function(){
									events[name].fn(val, that);
								}, 9);
							}
						}
					};
				})();
				var initChangeEvents = function(){
					eventTimer.init('input', $.prop(that.orig, 'value'), that.options.input);
					eventTimer.init('change', $.prop(that.orig, 'value'), that.options.change);
				};

				var step = {};

				var preventBlur = function(e){
					if(preventBlur.prevent){
						e.preventDefault();
						(isFocused || that.element.getShadowFocusElement()).focus();
						e.stopImmediatePropagation();
						return true;
					}
				};
				var callSplitChange = (function(){
					var timer;

					var call = function(e){
						var val;
						clearTimeout(timer);
						val = that.parseValue();
						$.prop(that.orig, 'value', val);
						eventTimer.call('input', val);
						if(!e || e.type != 'wsupdatevalue'){
							eventTimer.call('change', val);
						}
					};

					var onFocus = function(){
						clearTimeout(timer);
					};
					var onBlur = function(e){
						clearTimeout(timer);
						timer = setTimeout(call, 0);

						if(e.type == 'change'){
							stopPropagation(e);
							if(!o.splitInput){
								call();
							}
						}
					};

					that.element.on('wsupdatevalue', call);

					that.inputElements
						.add(that.buttonWrapper)
						.add(that.element)
						.on(
							{
								'focus focusin': onFocus,
								'blur focusout change': onBlur
							}
						)
					;
					setTimeout(function(){
						if(that.popover){
							$('> *', that.popover.element)
								.on({
									'focusin': onFocus,
									'focusout': onBlur
								})
							;
						}
					}, 0);
				})();

				var spinEvents = {};
				var spinElement = o.splitInput ? this.inputElements.filter('.ws-spin') : this.inputElements.eq(0);
				var elementEvts = {
					blur: function(e){
						if(!preventBlur(e) && !o.disabled && !o.readonly){
							if(!preventBlur.prevent){
								isFocused = false;
							}
						}
						stopPropagation(e);
					},
					focus: function(e){
						if(!isFocused){
							initChangeEvents();
							isFocused = this;
						}
					},
					keypress: function(e){
						if(e.isDefaultPrevented()){return;}
						var chr;
						var stepped = true;
						var code = e.keyCode;
						if(!e.ctrlKey && !e.metaKey && curCfg[that.type+'Signs']){
							chr = String.fromCharCode(e.charCode == null ? code : e.charCode);
							stepped = !(chr < " " || (curCfg[that.type+'Signs']+'0123456789').indexOf(chr) > -1);
						} else {
							stepped = false;
						}
						if(stepped){
							e.preventDefault();
						}
					},
					'input keydown keypress': (function(){
						var timer;
						var isStopped = false;
						var releaseTab = function(){
							if(isStopped === true){
								isStopped = 'semi';
								timer = setTimeout(releaseTab, 250);
							} else {
								isStopped = false;
							}
						};
						var stopTab = function(){
							isStopped = true;
							clearTimeout(timer);
							timer = setTimeout(releaseTab, 300);
						};
						var select = function(){
							this.focus();
							this.select();
							stopTab();
						};

						return function(e){
							if(o.splitInput && o.jumpInputs){
								if(e.type == 'input'){
									if($.prop(this, 'value').length === $.prop(this, 'maxLength')){
										try {
											$(this)
												.next()
												.next('input')
												.each(select)
											;
										} catch(er){}
									}
								} else if(!e.shiftKey && !e.crtlKey && e.keyCode == 9 && (isStopped === true || (isStopped && !$.prop(this, 'value')))){
									e.preventDefault();
								}
							}
						}
					})()
				};
				var mouseDownInit = function(){
					if(!o.disabled && !isFocused){
						that.element.getShadowFocusElement().focus();
					}
					preventBlur.set();

					return false;
				};

				preventBlur.set = (function(){
					var timer;
					var reset = function(){
						preventBlur.prevent = false;
					};
					return function(){
						clearTimeout(timer);
						preventBlur.prevent = true;
						setTimeout(reset, 9);
					};
				})();

				['stepUp', 'stepDown'].forEach(function(name){
					step[name] = function(factor){
						if(!o.disabled && !o.readonly){
							if(!isFocused){
								mouseDownInit();
							}
							var ret = false;
							if (!factor) {
								factor = 1;
							}
							try {
								that.elemHelper[name](factor);
								ret = that.elemHelper.prop('value');
								that.value(ret);
								eventTimer.call('input', ret);
							} catch (er) {}
							return ret;
						}
					};
				});

				this.buttonWrapper.on('mousedown', mouseDownInit);

				this.setInput = function(value){
					that.value(value);
					eventTimer.call('input', value);
				};
				this.setChange = function(value){
					that.setInput(value);
					eventTimer.call('change', value);
				};

				this.inputElements.on(elementEvts);

				if(!o.noSpinbtn){
					spinEvents[$.fn.mwheelIntent ? 'mwheelIntent' : 'mousewheel'] = function(e, delta){
						if(delta && isFocused && !o.disabled){
							step[delta > 0 ? 'stepUp' : 'stepDown']();
							e.preventDefault();
						}
					};
					spinEvents.keydown = function(e){
						if(o.list || e.isDefaultPrevented() || $.attr(this, 'list')){return;}
						var stepped = true;
						var code = e.keyCode;
						if (code == 38) {
							step.stepUp();
						} else if (code == 40) {
							step.stepDown();
						} else {
							stepped = false;
						}
						if(stepped){
							e.preventDefault();
						}
					};

					spinElement.attr({'autocomplete': 'off', role: 'spinbutton'}).on(spinEvents);
				}

				if(!o.splitInput){
					$(document).on('wslocalechange',function(){
						if(o.value){
							that.value(o.value);
						}

						if(placeholderFormat[that.type] && o.placeholder){
							that.placeholder(o.placeholder);
						}
					});
				} else {
					$(document).onTrigger('wslocalechange',function(){
						that.reorderInputs();
					});
				}

				$('.step-up', this.buttonWrapper)
					.on({
						'mousepressstart mousepressend': mousePress,
						'mousedown mousepress': function(e){
							step.stepUp();
						}
					})
				;
				$('.step-down', this.buttonWrapper)
					.on({
						'mousepressstart mousepressend': mousePress,
						'mousedown mousepress': function(e){
							step.stepDown();
						}
					})
				;
				initChangeEvents();
			}
		};

		['readonly', 'disabled'].forEach(function(name){
			spinBtnProto[name] = function(val){
				if(this.options[name] != val || !this._init){
					this.options[name] = !!val;
					if(name == 'readonly' && this.options.noInput){
						this.element
							.prop(name, true)
							.attr({'aria-readonly': this.options[name]})
						;
					} else {
						this.element.prop(name, this.options[name]);
					}
					this.buttonWrapper[this.options[name] ? 'addClass' : 'removeClass']('ws-'+name);
				}
			};
		});

		$.fn.spinbtnUI = function(opts){
			opts = $.extend({
				monthNames: 'monthNames',
				size: 1,
				startView: 0
			}, opts);
			return this.each(function(){
				$.webshims.objectCreate(spinBtnProto, {
					element: {
						value: $(this)
					}
				}, opts);
			});
		};
	})();

	(function(){
		var picker = {};
		var disable = {

		};

		var getDateArray = function(date){
			var ret = [date.getFullYear(), addZero(date.getMonth() + 1), addZero(date.getDate())];
			ret.month = ret[0]+'-'+ret[1];
			ret.date = ret[0]+'-'+ret[1]+'-'+ret[2];
			return ret;
		};
		var today = getDateArray(new Date());

		var _setFocus = function(element, _noFocus){
			var setFocus, that;
			element = $(element || this.activeButton);
			this.activeButton.attr({tabindex: '-1', 'aria-selected': 'false'});
			this.activeButton = element.attr({tabindex: '0', 'aria-selected': 'true'});
			this.index = this.buttons.index(this.activeButton[0]);

			clearTimeout(this.timer);

			if(!this.popover.openedByFocus && !_noFocus){
				that = this;
				setFocus = function(noTrigger){
					clearTimeout(that.timer);
					that.timer = setTimeout(function(){
						if(element[0]){
							element[0].focus();
							if(noTrigger !== true && !element.is(':focus')){
								setFocus(true);
							}
						}
					}, that.popover.isVisible ? 99 : 360);
				};
				this.popover.activateElement(element);
				setFocus();
			}

		};

		var _initialFocus = function(){
			var sel;
			if(this.popover.navedInitFocus){
				sel = this.popover.navedInitFocus.sel || this.popover.navedInitFocus;
				if((!this.activeButton || !this.activeButton[0]) && this.buttons[sel]){
					this.activeButton = this.buttons[sel]();
				} else if(sel){
					this.activeButton = $(sel, this.element);
				}

				if(!this.activeButton[0] && this.popover.navedInitFocus.alt){
					this.activeButton = this.buttons[this.popover.navedInitFocus.alt]();
				}
			}

			if(!this.activeButton || !this.activeButton[0]){
				this.activeButton = this.buttons.filter('.checked-value');
			}

			if(!this.activeButton[0]){
				this.activeButton = this.buttons.filter('.this-value');
			}
			if(!this.activeButton[0]){
				this.activeButton = this.buttons.eq(0);
			}

			this.setFocus(this.activeButton, this.opts.noFocus);
		};

		webshims.ListBox = function (element, popover, opts){
			this.element = $('ul', element);
			this.popover = popover;
			this.opts = opts || {};
			this.buttons = $('button:not(:disabled)', this.element);

			this.ons(this);
			this._initialFocus();
		};

		webshims.ListBox.prototype = {
			setFocus: _setFocus,
			_initialFocus: _initialFocus,
			prev: function(){
				var index = this.index - 1;
				if(index < 0){
					if(this.opts.prev){
						this.popover.navedInitFocus = 'last';
						this.popover.actionFn(this.opts.prev);
						this.popover.navedInitFocus = false;
					}
				} else {
					this.setFocus(this.buttons.eq(index));
				}
			},
			next: function(){
				var index = this.index + 1;
				if(index >= this.buttons.length){
					if(this.opts.next){
						this.popover.navedInitFocus = 'first';
						this.popover.actionFn(this.opts.next);
						this.popover.navedInitFocus = false;
					}
				} else {
					this.setFocus(this.buttons.eq(index));
				}
			},
			ons: function(that){
				this.element
					.on({
						'keydown': function(e){
							var handled;
							var key = e.keyCode;
							if(e.ctrlKey){return;}
							if(key == 36 || key == 33){
								that.setFocus(that.buttons.eq(0));
								handled = true;
							} else if(key == 34 || key == 35){
								that.setFocus(that.buttons.eq(that.buttons.length - 1));
								handled = true;
							} else if(key == 38 || key == 37){
								that.prev();
								handled = true;
							} else if(key == 40 || key == 39){
								that.next();
								handled = true;
							}
							if(handled){
								return false;
							}
						}
					})
				;
			}
		};

		webshims.Grid = function (element, popover, opts){
			this.element = $('tbody', element);
			this.popover = popover;
			this.opts = opts || {};
			this.buttons = $('button:not(:disabled,.othermonth)', this.element);

			this.ons(this);

			this._initialFocus();
			if(this.popover.openedByFocus){
				this.popover.activeElement = this.activeButton;
			}
		};

		webshims.Grid.prototype = {
			setFocus: _setFocus,
			_initialFocus: _initialFocus,

			first: function(){
				this.setFocus(this.buttons.eq(0));
			},
			last: function(){
				this.setFocus(this.buttons.eq(this.buttons.length - 1));
			},
			upPage: function(){
				$('.ws-picker-header > button:not(:disabled)', this.popover.element).trigger('click');
			},
			downPage: function(){
				this.activeButton.filter(':not([data-action="changeInput"])').trigger('click');
			},
			ons: function(that){
				this.element
					.on({
						'keydown': function(e){
							var handled;
							var key = e.keyCode;

							if(e.shiftKey){return;}

							if((e.ctrlKey && key == 40)){
								handled = 'downPage';
							} else if((e.ctrlKey && key == 38)){
								handled = 'upPage';
							} else if(key == 33 || (e.ctrlKey && key == 37)){
								handled = 'prevPage';
							} else if(key == 34 || (e.ctrlKey && key == 39)){
								handled = 'nextPage';
							} else if(e.keyCode == 36 || e.keyCode == 33){
								handled = 'first';
							} else if(e.keyCode == 35){
								handled = 'last';
							} else if(e.keyCode == 38){
								handled = 'up';
							} else if(e.keyCode == 37){
								handled = 'prev';
							} else if(e.keyCode == 40){
								handled = 'down';
							} else if(e.keyCode == 39){
								handled = 'next';
							}
							if(handled){
								that[handled]();
								return false;
							}
						}
					})
				;
			}
		};
		$.each({
			prevPage: {get: 'last', action: 'prev'},
			nextPage: {get: 'first', action: 'next'}
		}, function(name, val){
			webshims.Grid.prototype[name] = function(){
				if(this.opts[val.action]){
					this.popover.navedInitFocus = {
						sel: 'button[data-id="'+ this.activeButton.attr('data-id') +'"]:not(:disabled,.othermonth)',
						alt: val.get
					};
					this.popover.actionFn(this.opts[val.action]);
					this.popover.navedInitFocus = false;
				}
			};
		});

		$.each({
			up: {traverse: 'prevAll', get: 'last', action: 'prev', reverse: true},
			down: {traverse: 'nextAll', get: 'first', action: 'next'}
		}, function(name, val){
			webshims.Grid.prototype[name] = function(){
				var cellIndex = this.activeButton.closest('td').prop('cellIndex');
				var sel = 'td:nth-child('+(cellIndex + 1)+') button:not(:disabled,.othermonth)';
				var button = this.activeButton.closest('tr')[val.traverse]();

				if(val.reverse){
					button = $(button.get().reverse());
				}
				button = button.find(sel)[val.get]();

				if(!button[0]){
					if(this.opts[val.action]){
						this.popover.navedInitFocus = sel+':'+val.get;
						this.popover.actionFn(this.opts[val.action]);
						this.popover.navedInitFocus = false;
					}
				} else {
					this.setFocus(button.eq(0));
				}
			};
		});

		$.each({
			prev: {traverse: 'prevAll',get: 'last', reverse: true},
			next: {traverse: 'nextAll', get: 'first'}
		}, function(name, val){
			webshims.Grid.prototype[name] = function(){
				var sel = 'button:not(:disabled,.othermonth)';
				var button = this.activeButton.closest('td')[val.traverse]('td');
				if(val.reverse){
					button = $(button.get().reverse());
				}
				button = button.find(sel)[val.get]();
				if(!button[0]){
					button = this.activeButton.closest('tr')[val.traverse]('tr');
					if(val.reverse){
						button = $(button.get().reverse());
					}
					button = button.find(sel)[val.get]();
				}

				if(!button[0]){
					if(this.opts[name]){
						this.popover.navedInitFocus = val.get;
						this.popover.actionFn(this.opts[name]);
						this.popover.navedInitFocus = false;
					}
				} else {
					this.setFocus(button.eq(0));
				}
			};
		});

		picker.getWeek = function(date){
			var onejan = new Date(date.getFullYear(),0,1);
			return Math.ceil((((date - onejan) / 86400000) + onejan.getDay()+1)/7);
		};
		picker.getYearList = function(value, data){
			var j, i, val, disabled, lis, prevDisabled, nextDisabled, classStr, classArray, start;

			var size = data.options.size;
			var max = data.options.max.split('-');
			var min = data.options.min.split('-');
			var currentValue = data.options.value.split('-');
			var xthCorrect = 0;
			var enabled = 0;
			var str = '';
			var rowNum = 0;

			if(data.options.useDecadeBase == 'max' && max[0]){
				xthCorrect = 11 - (max[0] % 12);
			} else if(data.options.useDecadeBase == 'min' && min[0]){
				xthCorrect = 11 - (min[0] % 12);
			}

			value = value[0] * 1;
			start = value - ((value + xthCorrect) % (12 * size));

			for(j = 0; j < size; j++){
				if(j){
					start += 12;
				}  else {
					prevDisabled = picker.isInRange([start-1], max, min) ? {'data-action': 'setYearList','value': start-1} : false;
				}

				str += '

<button disabled="disabled">'+ start +' – '+(start + 11)+'</button>
';
				lis = [];
				for(i = 0; i < 12; i++){
					val = start + i ;
					classArray = [];
					if( !picker.isInRange([val], max, min) ){
						disabled = ' disabled=""';
					} else {
						disabled = '';
						enabled++;
					}

					if(val == today[0]){
						classArray.push('this-value');
					}

					if(currentValue[0] == val){
						classArray.push('checked-value');
					}

					classStr = classArray.length ? ' class="'+ (classArray.join(' ')) +'"' : '';

					if(i && !(i % 3)){
						rowNum++;
						lis.push('

');
					}
					lis.push('<button  data-id="year-'+ i +'" type="button"'+ disabled + classStr +' data-action="setMonthList" value="'+val+'" tabindex="-1" role="gridcell">'+val+'</button>	');
				}
				if(j == size - 1){
					nextDisabled = picker.isInRange([val+1], max, min) ? {'data-action': 'setYearList','value': val+1} : false;
				}
				str += '

'+ (lis.join(''))+ '

';
			}

			return {
				enabled: enabled,
				main: str,
				next: nextDisabled,
				prev: prevDisabled,
				type: 'Grid'
			};
		};

		picker.getMonthList = function(value, data){

			var j, i, name, val, disabled, lis, fullyDisabled, prevDisabled, nextDisabled, classStr, classArray;
			var o = data.options;
			var size = o.size;
			var max = o.max.split('-');
			var min = o.min.split('-');
			var currentValue = o.value.split('-');
			var enabled = 0;
			var rowNum = 0;
			var str = '';

			value = value[0] - Math.floor((size - 1) / 2);
			for(j = 0; j < size; j++){
				if(j){
					value++;
				} else {
					prevDisabled = picker.isInRange([value-1], max, min) ? {'data-action': 'setMonthList','value': value-1} : false;
				}
				if(j == size - 1){
					nextDisabled = picker.isInRange([value+1], max, min) ? {'data-action': 'setMonthList','value': value+1} : false;
				}
				lis = [];

				if( !picker.isInRange([value, '01'], max, min) && !picker.isInRange([value, '12'], max, min)){
					disabled = ' disabled=""';
					fullyDisabled = true;
				} else {
					fullyDisabled = false;
					disabled = '';
				}

				if(o.minView >= 1){
					disabled = ' disabled=""';
				}

				str += '

';

				str += o.selectNav ?
					'<select data-action="setMonthList" class="year-select">'+ picker.createYearSelect(value, max, min).join('') +'</select>' :
					'<button data-action="setYearList"'+disabled+' value="'+ value +'" tabindex="-1">'+ value +'</button>';
				str += '
';

				for(i = 0; i < 12; i++){
					val = curCfg.date.monthkeys[i+1];
					name = (curCfg.date[o.monthNames] || curCfg.date.monthNames)[i];
					classArray = [];
					if(fullyDisabled || !picker.isInRange([value, val], max, min) ){
						disabled = ' disabled=""';
					} else {
						disabled = '';
						enabled++;
					}

					if(value == today[0] && today[1] == val){
						classArray.push('this-value');
					}

					if(currentValue[0] == value && currentValue[1] == val){
						classArray.push('checked-value');
					}

					classStr = (classArray.length) ? ' class="'+ (classArray.join(' ')) +'"' : '';
					if(i && !(i % 3)){
						rowNum++;
						lis.push('

');
					}

					lis.push('<button data-id="month-'+ i +'" type="button"'+ disabled + classStr +' data-action="'+ (data.type == 'month' ? 'changeInput' : 'setDayList' ) +'" value="'+value+'-'+val+'" tabindex="-1" role="gridcell" aria-label="'+ curCfg.date.monthNames[i] +'">'+name+'</button>	');

				}

				str += '

'+ (lis.join(''))+ '

';
			}

			return {
				enabled: enabled,
				main: str,
				prev: prevDisabled,
				next: nextDisabled,
				type: 'Grid'
			};
		};

		picker.getDayList = function(value, data){

			var j, i, k, day, nDay, name, val, disabled, lis,  prevDisabled, nextDisabled, addTr, week, rowNum;

			var lastMotnh, curMonth, otherMonth, dateArray, monthName, fullMonthName, buttonStr, date2, classArray;
			var o = data.options;
			var size = o.size;
			var max = o.max.split('-');
			var min = o.min.split('-');
			var currentValue = o.value.split('-');
			var monthNames = curCfg.date[o.monthNamesHead] || curCfg.date[o.monthNames] || curCfg.date.monthNames;
			var enabled = 0;
			var str = [];
			var date = new Date(value[0], value[1] - 1, 1);

			date.setMonth(date.getMonth()  - Math.floor((size - 1) / 2));

			for(j = 0;  j < size; j++){
				date.setDate(1);
				lastMotnh = date.getMonth();
				rowNum = 0;
				if(!j){
					date2 = new Date(date.getTime());
					date2.setDate(-1);
					dateArray = getDateArray(date2);
					prevDisabled = picker.isInRange(dateArray, max, min) ? {'data-action': 'setDayList','value': dateArray[0]+'-'+dateArray[1]} : false;
				}

				dateArray = getDateArray(date);

				str.push('

');
				if( o.selectNav ){
					monthName = ['<select data-action="setDayList" class="month-select" tabindex="0">'+ picker.createMonthSelect(dateArray, max, min, monthNames).join('') +'</select>', '<select data-action="setDayList" class="year-select" tabindex="0">'+ picker.createYearSelect(dateArray[0], max, min, '-'+dateArray[1]).join('') +'</select>'];
					if(curCfg.date.showMonthAfterYear){
						monthName.reverse();
					}
					str.push( monthName.join(' ') );
				}

				fullMonthName = [curCfg.date.monthNames[(dateArray[1] * 1) - 1], dateArray[0]];
				monthName = [monthNames[(dateArray[1] * 1) - 1], dateArray[0]];
				if(curCfg.date.showMonthAfterYear){
					monthName.reverse();
					fullMonthName.reverse();
				}

				if(!data.options.selectNav) {
					str.push(
						'<button data-action="setMonthList"'+ (o.minView >= 2 ? ' disabled="" ' : '') +' value="'+ dateArray.date +'" tabindex="-1">'+ monthName.join(' ') +'</button>'
					);
				}

				str.push('

');

				if(data.options.showWeek){
					str.push(''+ curCfg.date.weekHeader +'	');
				}
				for(k = curCfg.date.firstDay; k < curCfg.date.dayNamesShort.length; k++){
					str.push(''+ curCfg.date.dayNamesShort[k] +'	');
				}
				k = curCfg.date.firstDay;
				while(k--){
					str.push(''+ curCfg.date.dayNamesShort[k] +'	');
				}
				str.push('

');

				if(data.options.showWeek) {
					week = picker.getWeek(date);
					str.push(''+ week +'	');
				}

				for (i = 0; i < 99; i++) {
					addTr = (i && !(i % 7));
					curMonth = date.getMonth();
					otherMonth = lastMotnh != curMonth;
					day = date.getDay();
					classArray = [];

					if(addTr && otherMonth ){
						str.push('
');
						break;
					}
					if(addTr){
						rowNum++;
						str.push('

');
						if(data.options.showWeek) {
							week++;
							str.push(''+ week +'	');
						}
					}

					if(!i){

						if(day != curCfg.date.firstDay){
							nDay = day - curCfg.date.firstDay;
							if(nDay < 0){
								nDay += 7;
							}
							date.setDate(date.getDate() - nDay);
							day = date.getDay();
							curMonth = date.getMonth();
							otherMonth = lastMotnh != curMonth;
						}
					}

					dateArray = getDateArray(date);
					buttonStr = '<button data-id="day-'+ date.getDate() +'" role="gridcell" data-action="changeInput" value="'+ (dateArray.join('-')) +'"';

					if(otherMonth){
						classArray.push('othermonth');
					} else {
						classArray.push('day-'+date.getDate());
					}

					if(dateArray[0] == today[0] && today[1] == dateArray[1] && today[2] == dateArray[2]){
						classArray.push('this-value');
					}

					if(currentValue[0] == dateArray[0] && dateArray[1] == currentValue[1] && dateArray[2] == currentValue[2]){
						classArray.push('checked-value');
					}

					if(classArray.length){
						buttonStr += ' class="'+ classArray.join(' ') +'"';
					}

					if(!picker.isInRange(dateArray, max, min) || (data.options.disableDays && $.inArray(day, data.options.disableDays) != -1)){
						buttonStr += ' disabled=""';
					}

					str.push(buttonStr+' tabindex="-1">'+ date.getDate() +'</button>	');

					date.setDate(date.getDate() + 1);
				}
				str.push('

');
				if(j == size - 1){
					dateArray = getDateArray(date);
					dateArray[2] = 1;
					nextDisabled = picker.isInRange(dateArray, max, min) ? {'data-action': 'setDayList','value': dateArray.date} : false;
				}
			}

			return {
				enabled: 9,
				main: str.join(''),
				prev: prevDisabled,
				next: nextDisabled,
				type: 'Grid'
			};
		};

		picker.isInRange = function(values, max, min){
			var i;
			var ret = true;
			for(i = 0; i < values.length; i++){

				if(min[i] && min[i] > values[i]){
					ret = false;
					break;
				} else if( !(min[i] && min[i] == values[i]) ){
					break;
				}
			}
			if(ret){
				for(i = 0; i < values.length; i++){

					if((max[i] && max[i] < values[i])){
						ret = false;
						break;
					} else if( !(max[i] && max[i] == values[i]) ){
						break;
					}
				}
			}
			return ret;
		};

		picker.createMonthSelect = function(value, max, min, monthNames){
			if(!monthNames){
				monthNames = curCfg.date.monthNames;
			}

			var selected;
			var i = 0;
			var options = [];
			var tempVal = value[1]-1;
			for(; i < monthNames.length; i++){
				selected = tempVal == i ? ' selected=""' : '';
				if(selected || picker.isInRange([value[0], i+1], max, min)){
					options.push('<option value="'+ value[0]+'-'+addZero(i+1) + '"'+selected+'>'+ monthNames[i] +'</option>');
				}
			}
			return options;
		};

		picker.createYearSelect = function(value, max, min, valueAdd){

			var temp;
			var goUp = true;
			var goDown = true;
			var options = ['<option selected="">'+ value + '</option>'];
			var i = 0;
			if(!valueAdd){
				valueAdd = '';
			}
			while(i < 8 && (goUp || goDown)){
				i++;
				temp = value-i;
				if(goUp && picker.isInRange([temp], max, min)){
					options.unshift('<option value="'+ (temp+valueAdd) +'">'+ temp +'</option>');
				} else {
					goUp = false;
				}
				temp = value + i;
				if(goDown && picker.isInRange([temp], max, min)){
					options.push('<option value="'+ (temp+valueAdd) +'">'+ temp +'</option>');
				} else {
					goDown = false;
				}
			}
			return options;
		};

		var actions = {
			changeInput: function(val, popover, data){
				popover.stopOpen = true;
				data.element.getShadowFocusElement().focus();
				setTimeout(function(){
					popover.stopOpen = false;
				}, 9);
				popover.hide();
				data.setChange(val);
			}
		};

		(function(){
			var retNames = function(name){
				return 'get'+name+'List';
			};
			var retSetNames = function(name){
				return 'set'+name+'List';
			};
			var stops = {
				date: 'Day',
				week: 'Day',
				month: 'Month'
			};

			$.each({'setYearList' : ['Year', 'Month', 'Day'], 'setMonthList': ['Month', 'Day'], 'setDayList': ['Day']}, function(setName, names){
				var getNames = names.map(retNames);
				var setNames = names.map(retSetNames);
				actions[setName] = function(val, popover, data, startAt){
					val = ''+val;
					var o = data.options;
					var values = val.split('-');
					if(!startAt){
						startAt = 0;
					}
					$.each(getNames, function(i, item){
						if(i >= startAt){
							var content = picker[item](values, data);

							if( values.length < 2 || content.enabled > 1 || stops[data.type] === names[i]){
								popover.element
									.attr({'data-currentview': setNames[i]})
									.addClass('ws-size-'+o.size)
									.data('pickercontent', {
										data: data,
										content: content,
										values: values
									})
								;
								popover.bodyElement.html(content.main);
								if(content.prev){
									popover.prevElement
										.attr(content.prev)
										.prop({disabled: false})
									;
								} else {
									popover.prevElement
										.removeAttr('data-action')
										.prop({disabled: true})
									;
								}
								if(content.next){
									popover.nextElement
										.attr(content.next)
										.prop({disabled: false})
									;
								} else {
									popover.nextElement
										.removeAttr('data-action')
										.prop({disabled: true})
									;
								}
								if(webshims[content.type]){
									new webshims[content.type](popover.bodyElement.children(), popover, content);
								}
								popover.element.trigger('pickerchange');
								return false;
							}
						}
					});
				};
			});
		})();

		picker.commonInit = function(data, popover){
			var actionfn = function(e){
				if(!$(this).is('.othermonth') || $(this).css('cursor') == 'pointer'){
					popover.actionFn({
						'data-action': $.attr(this, 'data-action'),
						value: $(this).val() || $.attr(this, 'value')
					});
				}
				return false;
			};
			var id = new Date().getTime();
			var generateList = function(o, max, min){
				var options = [];
				var label = '';
				var labelId = '';
				o.options = data.getOptions() || {};
				$('div.ws-options', popover.contentElement).remove();
				$.each(o.options[0], function(val, label){
					var disabled = picker.isInRange(val.split('-'), o.maxS, o.minS) ?
						'' :
						' disabled="" '
					;
					options.push('
<button value="'+ val +'" '+disabled+' data-action="changeInput" tabindex="-1"  role="option">'+ (label || data.formatValue(val, false)) +'</button>
');
				});
				if(options.length){
					id++;
					if(o.options[1]){
						labelId = 'datalist-'+id;
						label = '
'+ o.options[1] +'
';
						labelId = ' aria-labelledbyid="'+ labelId +'" ';
					}
					new webshims.ListBox($('
'+label+'
'+ options.join('') +'
').insertAfter(popover.bodyElement)[0], popover, {noFocus: true});
				}
			};
			var updateContent = function(){
				if(popover.isDirty){
					var o = data.options;
					o.maxS = o.max.split('-');
					o.minS = o.min.split('-');

					$('button', popover.buttonRow).each(function(){
						var text;
						if($(this).is('.ws-empty')){
							text = curCfg.date.clear;
							if(!text){
								text = formcfg[''].date.clear || 'clear';
								webshims.warn("could not get clear text from form cfg");
							}
						} else if($(this).is('.ws-current')){
							text = (curCfg[data.type] || {}).currentText;
							if(!text){
								text = (formcfg[''][[data.type]] || {}).currentText || 'current';
								webshims.warn("could not get currentText from form cfg");
							}
							$.prop(this, 'disabled', !picker.isInRange(today[data.type].split('-'), o.maxS, o.minS));
						}
						if(text){
							$(this).text(text).attr({'aria-label': text});
							if(webshims.assumeARIA){
								$.attr(this, 'aria-label', text);
							}
						}

					});
					popover.nextElement.attr({'aria-label': curCfg.date.nextText});
					$('> span', popover.nextElement).html(curCfg.date.nextText);
					popover.prevElement.attr({'aria-label': curCfg.date.prevText});
					$('> span', popover.prevElement).html(curCfg.date.prevText);

					generateList(o, o.maxS, o.minS);

				}
				$('button.ws-empty', popover.buttonRow).prop('disabled', $.prop(data.orig, 'required'));
				popover.isDirty = false;
			};

			popover.actionFn = function(obj){
				if(actions[obj['data-action']]){
					actions[obj['data-action']](obj.value, popover, data, 0);
				} else {
					webshims.warn('no action for '+ obj['data-action']);
				}
			};

			popover.contentElement.html('<button class="ws-prev" tabindex="0"></button> <button class="ws-next" tabindex="0"></button>

<button type="button" class="ws-current" data-action="changeInput" value="'+today[data.type]+'" tabindex="0"></button> <button type="button" data-action="changeInput" value="" class="ws-empty" tabindex="0"></button>
');
			popover.nextElement = $('button.ws-next', popover.contentElement);
			popover.prevElement = $('button.ws-prev', popover.contentElement);
			popover.bodyElement = $('div.ws-picker-body', popover.contentElement);
			popover.buttonRow = $('div.ws-button-row', popover.contentElement);

			popover.isDirty = true;

			popover.contentElement
				.on('click', 'button[data-action]', actionfn)
				.on('change', 'select[data-action]', actionfn)
			;

			popover.contentElement.on({
				keydown: function(e){
					if(e.keyCode == 9){
						var tabbable = $('[tabindex="0"]:not(:disabled)', this).filter(':visible');
						var index = tabbable.index(e.target);
						if(e.shiftKey && index <= 0){
							tabbable.last().focus();
							return false;
						}
						if(!e.shiftKey && index >= tabbable.length - 1){
							tabbable.first().focus();
							return false;
						}
					} else if(e.keyCode == 27){
						data.element.getShadowFocusElement().focus();
						popover.hide();
						return false;
					}
				}
			});

			$(data.options.orig).on('input', function(){
				var currentView;
				if(data.options.updateOnInput && popover.isVisible && data.options.value && (currentView = popover.element.attr('data-currentview'))){
					actions[currentView]( data.options.value , popover, data, 0);
				}
			});

			data._propertyChange = (function(){
				var timer;
				var update = function(){
					if(popover.isVisible){
						updateContent();
					}
				};
				return function(prop){
					if(prop == 'value'){return;}
					popover.isDirty = true;
					if(popover.isVisible){
						clearTimeout(timer);
						timer = setTimeout(update, 9);
					}
				};
			})();

			popover.activeElement = $([]);

			popover.activateElement = function(element){
				element = $(element);
				if(element[0] != popover.activeElement[0]){
					popover.activeElement.removeClass('ws-focus');
					element.addClass('ws-focus');
				}
				popover.activeElement = element;
			};
			popover.element.on({
				wspopoverbeforeshow: function(){
					data.element.triggerHandler('wsupdatevalue');
					updateContent();
				}
			});

			$(document).onTrigger('wslocalechange', data._propertyChange);
		};

		picker._common = function(data){
			var popover = webshims.objectCreate(webshims.wsPopover, {}, {prepareFor: data.element});
			var opener = $('<button type="button" class="ws-popover-opener"></button>').appendTo(data.buttonWrapper);
			var options = data.options;
			var init = false;

			var show = function(){
				if(!options.disabled && !options.readonly && !popover.isVisible){
					if(!init){
						picker.commonInit(data, popover);
					}

					if(!init || data.options.restartView) {
						actions.setYearList( options.defValue || options.value, popover, data, data.options.startView);
					} else {
						actions[popover.element.attr('data-currentview') || 'setYearList']( options.defValue || options.value, popover, data, 0);
					}

					init = true;
					popover.show(data.element);
				}
			};

			options.containerElements.push(popover.element[0]);

			if(!options.startView){
				options.startView = 0;
			}
			if(!options.minView){
				options.minView = 0;
			}
			if(options.startView < options.minView){
				options.minView = options.startView;
				webshims.warn("wrong config for minView/startView.");
			}
			if(!options.size){
				options.size = 1;
			}

			popover.element
				.addClass(data.type+'-popover input-picker')
				.attr({role: 'application'})
				.on({
					wspopoverhide: function(){
						popover.openedByFocus = false;
					},
					focusin: function(e){
						if(popover.activateElement){
							popover.openedByFocus = false;
							popover.activateElement(e.target);
						}
					},
					focusout: function(){
						if(popover.activeElement){
							popover.activeElement.removeClass('ws-focus');
						}
					}
				})
			;

			labelWidth(popover.element.children('div.ws-po-outerbox').attr({role: 'group'}), options.labels, true);
			labelWidth(opener, options.labels, true);

			opener
				.attr({
					'tabindex': options.labels.length ? 0 : '-1'
				})
				.on({
					mousedown: function(){
						stopPropagation.apply(this, arguments);
						popover.preventBlur();
					},
					click: function(){
						if(popover.isVisible && popover.activeElement){
							popover.openedByFocus = false;
							popover.activeElement.focus();
						}
						show();
					},
					focus: function(){
						popover.preventBlur();
					}
				})
			;

			(function(){
				var mouseFocus = false;
				var resetMouseFocus = function(){
					mouseFocus = false;
				};
				data.inputElements.on({
					focus: function(){
						if(!popover.stopOpen && (data.options.openOnFocus || (mouseFocus && options.openOnMouseFocus))){
							popover.openedByFocus = !options.noInput;
							show();
						} else {
							popover.preventBlur();
						}
					},
					mousedown: function(){
						mouseFocus = true;
						setTimeout(resetMouseFocus, 9);
						if(data.element.is(':focus')){
							popover.openedByFocus = !options.noInput;
							show();
						}
						popover.preventBlur();
					}
				});
			})();
			data.popover = popover;
		};

		picker.month = picker._common;
		picker.date = picker.month;

		webshims.picker = picker;
	})();

	(function(){

		var stopCircular, isCheckValidity;

		var modernizrInputTypes = Modernizr.inputtypes;
		var inputTypes = {

		};
		var copyProps = [
			'disabled',
			'readonly',
			'value',
			'min',
			'max',
			'step',
			'title',
			'placeholder'
		];

		//
		var copyAttrs = ['data-placeholder', 'tabindex'];

		$.each(copyProps.concat(copyAttrs), function(i, name){
			var fnName = name.replace(/^data\-/, '');
			webshims.onNodeNamesPropertyModify('input', name, function(val){
				if(!stopCircular){
					var shadowData = webshims.data(this, 'shadowData');
					if(shadowData && shadowData.data && shadowData.nativeElement === this && shadowData.data[fnName]){
						shadowData.data[fnName](val);
					}
				}
			});
		});

		if(options.replaceUI && 'valueAsNumber' in document.createElement('input')){
			var reflectFn = function(val){
				if(webshims.data(this, 'hasShadow')){
					$.prop(this, 'value', $.prop(this, 'value'));
				}
			};

			webshims.onNodeNamesPropertyModify('input', 'valueAsNumber', reflectFn);
			webshims.onNodeNamesPropertyModify('input', 'valueAsDate', reflectFn);
		}

		var extendType = (function(){
			return function(name, data){
				inputTypes[name] = data;
				data.attrs = $.merge([], copyAttrs, data.attrs);
				data.props = $.merge([], copyProps, data.props);
			};
		})();

		var isVisible = function(){
			return $.css(this, 'display') != 'none';
		};
		var sizeInput = function(data){
			var init;
			var updateStyles = function(){
				$.style( data.orig, 'display', '' );
				var hasButtons, marginR, marginL;
				var correctWidth = 0.6;
				if(!init || data.orig.offsetWidth){
					hasButtons = data.buttonWrapper && data.buttonWrapper.filter(isVisible).length;
					marginR = $.css( data.orig, 'marginRight');
					data.element.css({
						marginLeft: $.css( data.orig, 'marginLeft'),
						marginRight: hasButtons ? 0 : marginR
					});

					if(hasButtons){
						marginL = (parseInt(data.buttonWrapper.css('marginLeft'), 10) || 0);
						data.element.css({paddingRight: ''});

						if(marginL < 0){
							marginR = (parseInt(marginR, 10) || 0) + ((data.buttonWrapper.outerWidth() + marginL) * -1);
							data.buttonWrapper.css('marginRight', marginR);
							data.element
								.css({paddingRight: ''})
								.css({
									paddingRight: (parseInt( data.element.css('paddingRight'), 10) || 0) + data.buttonWrapper.outerWidth()
								})
							;
						} else {
							data.buttonWrapper.css('marginRight', marginR);
							correctWidth = data.buttonWrapper.outerWidth(true) + 0.6;
						}
					}

					data.element.outerWidth( $(data.orig).outerWidth() - correctWidth );
				}
				init = true;
				$.style( data.orig, 'display', 'none' );
			};
			$(document).onTrigger('updateshadowdom', updateStyles);
		};

		var implementType = function(){
			var type = $.prop(this, 'type');

			var i, opts, data, optsName, labels;
			if(inputTypes[type] && webshims.implement(this, 'inputwidgets')){
				data = {};
				optsName = type;

				//todo: do we need deep extend?

				labels = $(this).jProp('labels');

				opts = $.extend({}, options.widgets, options[type], $($.prop(this, 'form')).data(type) || {}, $(this).data(type) || {}, {
					orig: this,
					type: type,
					labels: labels,
					options: {},
					input: function(val){
						opts._change(val, 'input');
					},
					change: function(val){
						opts._change(val, 'change');
					},
					_change: function(val, trigger){
						stopCircular = true;
						$.prop(opts.orig, 'value', val);
						stopCircular = false;
						if(trigger){
							$(opts.orig).trigger(trigger);
						}
					},
					containerElements: []
				});

				for(i = 0; i < copyProps.length; i++){
					opts[copyProps[i]] = $.prop(this, copyProps[i]);
				}

				for(i = 0; i < copyAttrs.length; i++){
					optsName = copyAttrs[i].replace(/^data\-/, '');
					if(optsName == 'placeholder' || !opts[optsName]){
						opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
					}
				}

				data.shim = inputTypes[type]._create(opts);

				webshims.addShadowDom(this, data.shim.element, {
					data: data.shim || {}
				});

				data.shim.options.containerElements.push(data.shim.element[0]);

				labelWidth($(this).getShadowFocusElement(), labels);
				$.attr(this, 'required', $.attr(this, 'required'));
				$(this).on('change', function(e){
					if(!stopCircular){
						data.shim.value($.prop(this, 'value'));
					}
				});

				(function(){
					var has = {
						focusin: true,
						focus: true
					};
					var timer;
					var hasFocusTriggered = false;
					var hasFocus = false;

					$(data.shim.options.containerElements)
						.on({
							'focusin focus focusout blur': function(e){
								e.stopImmediatePropagation();
								hasFocus = has[e.type];
								clearTimeout(timer);
								timer = setTimeout(function(){
									if(hasFocus != hasFocusTriggered){
										hasFocusTriggered = hasFocus;
										$(opts.orig).triggerHandler(hasFocus ? 'focus' : 'blur');
										$(opts.orig).trigger(hasFocus ? 'focusin' : 'focusout');
									}
									hasFocusTriggered = hasFocus;
								}, 0);
							}
						})
					;
				})();

				data.shim.element.on('change input', stopPropagation);

				if(Modernizr.formvalidation){
					$(opts.orig).on('firstinvalid', function(e){
						if(!webshims.fromSubmit && isCheckValidity){return;}
						$(opts.orig).off('invalid.replacedwidgetbubble').on('invalid.replacedwidgetbubble', function(evt){
							if(!e.isInvalidUIPrevented() && !evt.isDefaultPrevented()){
								webshims.validityAlert.showFor( e.target );
								e.preventDefault();
								evt.preventDefault();
							}
							$(opts.orig).off('invalid.replacedwidgetbubble');
						});
					});
				}

				if(data.shim.buttonWrapper && data.shim.buttonWrapper.filter(isVisible).length){
					data.shim.element.addClass('has-input-buttons');
				}

				if(opts.calculateWidth){
					sizeInput(data.shim);
				}
				$(this).css({display: 'none'});
			}
		};

		if(!modernizrInputTypes.range || options.replaceUI){
			extendType('range', {
				_create: function(opts, set){
					return $('').insertAfter(opts.orig).rangeUI(opts).data('rangeUi');
				}
			});
		}

		if(Modernizr.formvalidation){
			['input', 'form'].forEach(function(name){
				var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
					prop: {
						value: function(){
							isCheckValidity = true;
							var ret = desc.prop._supvalue.apply(this, arguments);
							isCheckValidity = false;
							return ret;
						}
					}
				});
			});
		}

		['number', 'time', 'month', 'date'].forEach(function(name){
			if(!modernizrInputTypes[name] || options.replaceUI){
				extendType(name, {
					_create: function(opts, set){

						if(opts.splitInput && !splitInputs[name]){
							webshims.warn('splitInput not supported for '+ name);
							opts.splitInput = false;
						}
						var markup = opts.splitInput ?
								'' :
								'<input class="ws-'+name+'" type="text" />';
						var data = $(markup) //role="spinbutton"???
							.insertAfter(opts.orig)
							.spinbtnUI(opts)
							.data('wsspinner')
						;
						if(webshims.picker && webshims.picker[name]){
							webshims.picker[name](data);
						}
						data.buttonWrapper.addClass('input-button-size-'+(data.buttonWrapper.children().filter(isVisible).length));
						return data;
					}
				});
			}
		});

		webshims.addReady(function(context, contextElem){
			$('input', context)
				.add(contextElem.filter('input'))
				.each(implementType)
			;
		});
	})();
});

redpajama_set_name: RedPajamaGithub


Can someone guide me to a lesson where I can learn how to create the Rhythm Guitar for any Lead Guitar?
So I can apply this even to any guitar tab from the lessons found here, or even if I write a lead guitar.
The easiest way to create backing tracks to play leads over is to simply choose a scale, then take your Root note/Tone and add the next two notes in said scale and play a power chord for each chosen note/position. Loop that and you have a rythm part that you can play lead over. It's that simple Of course, it can get as complicated as you want to make it. But for starters, 3 Chord Rock will get you going.
If you don't mind bluesish rock, just pick a key, (say the key of A) and then play1/4/5 position of the major scale as power chords and solo in the key of A (Just start on the 5th fret E string, which is an A note.) and play the Blues/Pentatonic scale.
Hopefully this will get you going. Record some bits so we can see how your doing!
I tried your advice on a tab called "Luca Turilli's Exercises", everybody can find this tab on ultimate-guitar, and I found that the scale used is C, so I used C power chords and the next power chord the D power chord and so on.
The last measure is in another scale so I ended up using A power chord.
Let me know what you think. You have the .gp5 file attached.


The 2015 Super Bowl is scheduled for Sunday, Feb. 1, 2015, at University of Phoenix Stadium in Glendale, Arizona. Super Bowl XLIX will be the third super bowl hosted by the Phoenix metropolitan area. It will feature last year's Super Bowl champs, the Seattle Seahawks, and the New England Patriots.
The stadium, which accommodates up to 72,200 fans, is surrounded by parking lots with a total of more than 14,000 parking spaces, including 2,000 spaces for people with disabilities. Many of the spaces will go to sponsors and VIPs, but a portion of the parking spaces will be made available to verified ticket holders.
NEW PARKING OPTION: Reserved parking also is now available at the Desert Mirage Golf Course adjacent to the stadium. The spaces, which allow earlier access than NFL-sanctioned lots, are selling for about $130. You will immediately download your parking pass, or you can show it to the attendant on your smartphone.
Need tickets to the Big Game? It has been a highly unusual year for ticket-price fluctuations and many marketplaces are no longer listing inventory online.
Other game-day parking options that may be available on a first-come, first-served basis include the nearby Tanger Outlets ($60) and Westfield mall ($100). Those prices are per their website and subject to change.
The Super Bowl experience has grown to encompass much more than the namesake game. Thousands of fans will soak up the NFL atmosphere without attending the actual game by visiting NFL Experience or Verizon Super Bowl Central, both of which will be held in downtown Phoenix. There are more than 27,000 parking spaces available in garages and along the streets of downtown Phoenix, though competition could get fierce for a space during peak times. A limited number of spaces are available for advance reservations.
If you opt for a meter instead, rates are generally $1.50 per hour, and most meters accept credit cards. Looking for information on the best travel routes, taxi zones and accessible parking? Check out the Super Bowl host committee's transportation page.
The excellent Valley Metro system of buses and light rail in Phoenix will be running extra routes to accommodate Super Bowl fans eager to attend the game and/or the related festivities. Get the full details on the enhanced service schedule here.
A: This is the million-dollar question. The NFL does not allow tailgating on any of its official lots, and most privately controlled lots have followed suit. We will update the site if reserved spaces come available. Meantime, you can use the links above to buy tickets for tailgate parties outside the stadium.
Q: How do I arrange for a disability parking pass (ADA)?
A: Find information on ADA parking for the Super Bowl and Pro Bowl here.
Last update: Feb. 1, 2015.


text:
Published on Share The World's Resources (STWR) (https://www.sharing.org)
Home > Debt crisis warning as poorest countries' repayment bills soar
2986498923_294d49370e_b.jpg
Debt repayments by the world's poorest countries have doubled since 2010 to reach their highest level since just before the internationally organised write-off in 2005, campaigners have warned.
The Jubilee Debt Campaign [1] (JDC) said a borrowing spree when global interest rates were low had left many developing nations facing repayments bills that were forcing them into public spending cuts.
Plunging commodity prices, a stronger dollar and rising US interest rates had combined to increase debt repayments by 85% between 2010 and 2018, the JDC said.
The bid to reduce the unaffordable debts of the world's poorest countries was prompted by grassroots activism in the late 1990s and early 2000s, first with the Jubilee 2000 campaign [2] and then with Make Poverty History [3].
But the financial position of many developing nations has again deteriorated in recent years.
Repayments account for more than 12% of government revenue on average, the highest level since 2004, the year before the G8 summit held at Gleneagles [4]agreed a comprehensive package of financial assistance involving aid and debt relief.
The International Monetary Fund has become increasingly concerned at the financial vulnerability of poor countries and will discuss the issue at its spring meeting in Washington DC next week. Two-fifths of low-income countries are assessed by the IMF to be at "elevated risk of debt distress", [5] a doubling since 2013.
Tim Jones, the JDC's head of policy, said: "The growing debt crisis needs urgent international attention. A vital first step is to require that all loans to governments are publicly disclosed, allowing parliaments, media and civil society to hold governments to account for new borrowing.
"In addition, when crises arise, the IMF should stop bailing out reckless lenders, and require debts to be reduced instead, so that the costs of crises are shared between borrower and lender. All too often, the lenders who helped to cause the crisis are bailed out, while all the costs of irresponsible lending are borne by people in the borrowing country.
"There is now evidence of falling public spending in countries hit by high debt payments, further undermining progress towards the sustainable [6]development [6]goals [6]."
External loans to developing country governments more than doubled from $191bn (£14.5bn) in 2008 to $424bn in 2017, the latest year for which figures are available.
Calculations by the JDC found that in the 15 countries with the highest debt payments, public spending per person fell in 10 of them between 2016 and 2018.
In oil-rich Angola, which was hit by the collapse in the cost of crude in the mid-2000s, debt payments were 57% of government revenue in 2018, while public spending was cut by 19% between 2016 and 2018. Cameroon has cut spending by 20% and Egypt by 23% after their repayments rose to 30% and 20% of government revenue respectively. All three countries are on IMF programmes.
Across the 15 countries with the highest repayments, public spending fell by an average of 4%.
In contrast, of the 15 countries with the lowest debt payments, public spending per person fell in just two between 2016 and 2018. On average across these 15, public spending increased by 11%.
Original source: The Guardian [7]
Image credit: Some rights reserved by JubileeUSA [8], flickr creative commons
Finance and debt [9]
Source URL: https://www.sharing.org/information-centre/news/debt-crisis-warning-poorest-countries-repayment-bills-soar
[1] https://jubileedebt.org.uk/
[2] https://www.theguardian.com/business/2000/nov/27/debt.development
[3] https://www.theguardian.com/voluntary-sector-network/2012/may/31/make-poverty-history
[4] https://www.theguardian.com/politics/2005/jun/11/uk.g8
[5] https://blogs.imf.org/2018/03/22/managing-debt-vulnerabilities-in-low-income-and-developing-countries/
[6] https://www.theguardian.com/global-development/ng-interactive/2015/jan/19/sustainable-development-goals-changing-world-17-steps-interactive
[7] https://www.theguardian.com/business/2019/apr/03/debt-crisis-warning-as-poorest-countries-repayment-bills-soar?CMP=Share_AndroidApp_Outlook
[8] https://www.flickr.com/photos/24094845@N00/2986498923/sizes/l
[9] https://www.sharing.org/topic/finance-and-debt

redpajama_set_name: RedPajamaCommonCrawl


Spit has launched the chemical anchor Epcon C8 Extreme, an epoxy resin that has been specifically formulated for rebar and stud applications requiring a high load capacity. The new formulation resin is the first to achieve European Technical Approval for rebar applications.
When it comes to specifying a fixing for safety critical applications, performance is vital. The European Technical Approval ensures the anchor performance of Epcon C8 Extreme is reliable and functions correctly. The approval also demonstrates that the epoxy resin complies with all necessary Building Regulations.
Easy to inject, the Epcon C8 is available with an Extreme Performance Injection Tool, which significantly reduces the effort required for application, by applying a force of up to 500kg to the 450ml resin cartridge.
Epcon C8 Extreme has also been approved for use in wet and diamond drilled holes, and rebar applications up to 32mm diameter. Epcon C8 allows injection from 5 to 35°C, providing the same high performance level without heating the cartridge.
Suitable for extreme applications, CSTB fire tested and NF approved, Epcon C8 offers reliability and high performance at both low and high temperatures. Phenol and Styrene free it has virtually no odour, making it ideal for indoor applications.


I'll say it once, I'll say it twice, I'll say it a thousand times: we don't start serving soups, salads or sandwiches at Pleasant Pops until 11 am. As illuminated in the post from a few weeks ago, there's a lot that goes on behind the scenes at the shop, so when we say we can't make a sandwich at 10:14, it's because sandwiches simply aren't ready to be made. Each part of the lunch and dinner menu is cleaned, restocked and carefully arranged every morning to ensure a successful day of sprout salads, roasted pepper hummus sandwiches, and bowls of gazpacho. Sure it could be a little disappointing if you're not a breakfast person and seem ready for a bigger bite than a croissant at 10 am, so we've got an answer for you. Over the past year and a half we've perfected recipes for five different salads always available (morning, noon and night) which can easily, and healthily, fill your morning tummy.
The original cold-case salad, as we call them in the shop, is the Apple Curry Quinoa. After a few rounds of tweaking the recipe, we found the perfect balance of quinoa, chopped apples, almonds and cranberries. With a bit of a zing from the curry and shallots, a dash of olive oil and lemon juice, we've created a lovely balance of flavors. In a similar vein, the Farro Roasted Beet salad is also grain based. Farro is a grain similar to barley and provides a rich base for the roasted beets we mix in. By adding carrots and parsley, for a brighter taste note, the salad is quite hearty (and, as roasted beets tend to do, the salad has a beautiful purple tint to it making it as colorful as it is delicious).
My favorite of the five cold-case salads is the Broccoli Red Cabbage salad, inspired by some left over blue cheese we had at the store. The finely chopped broccoli and cabbage is tossed together with the blue cheese, some walnuts and scallions and drizzled with a simple balsamic vinaigrette. It's a crunchy and tasty salad, perfect on it's own or as a side dish. The Orange Fennel salad is probably the most unique in the bunch. With simple ingredients (orange, fennel, oil, vinegar and some salt and pepper) this salad is light and refreshing. I think of it more as a morning salad, a great side to a cup of yogurt and granola, though you're welcome to enjoy it anytime. Finally, our most recent addition to the cold-case salad collection is the Almond Sesame Green Bean salad. Using boiled and blanched green beans, keeping them crisp and bright green, we add sesame seeds and slivered almonds for a great, totally crunchy, salad. Tossed in a sesame oil, ginger and lemon dressing, it's a great middle-of-the-afternoon treat to keep you satisfied until dinner.
With so many delicious options to choose from, each going for $4.00 and served in 8 ounce resealable containers, I think our breakfast options just got a lot more exciting. A scone paired with some Farro Roasted Beet salad, or a yogurt parfait along side some Orange Fennel salad and you've got yourself a happy, healthy morning meal. Enjoy!


John is responsible for leading all commercial activities across Europe.
John has been with CSM since 1987 serving in various positions within the sales department. Starting as a National Account Manager, John has held ever increasing roles such as VP, Modern Trade in Europe, Business Unit Directory Artisan/Industry, Sales and Innovation Director, Market Director/Country Manager and his current role as Vice President over large retail chains in Europe. Throughout his career at CSM, John has developed a pivotal role within the business, transforming key markets into an engine for growth and a strategic European pioneer.
Prior to joining CSM, John held a number of sales roles at British Fermentation Products, Unilever and Debenhams.
John received his degree of Management Studies from Manchester Metropolitan University.


text:
popcorn horror
Popcorn Horror interview
Posted on December 21, 2018 by silentpcomics
Back in October Craig Jex did an interview with me for the Halloween edition of Popcorn Horror magazine. For those that missed it and for Heads! newbies who want to know more, here's that interview in full.
Independent comic creator, Rik Jackson has had quite the eventful year. Fans of his comic strip, Rock In Purgatory, featured in these very blood drenched pages of Popcorn Horror were able to get their claws on the anthology which was published in early 2018. Unlike the characters in those rock 'n roll pages, Rik didn't bathe himself in the glory that his work enjoyed and end up on a path of self-destruction and grisly death. Instead, he got straight back in the saddle and created Heads!
Heads! tells the story of Private Detective Steve Datsun. An investigator that's seen it all before, that is until these girls with those heads turn up. After a being hired to investigate a heist that the Heads! gang have pulled off, Datsun becomes embroiled in a dark world of paranormal crimes, unexplained phenomenon and twisting conspiracies. Seeking the evidence he needs to prove these anomalies and reveal what's behind them, Datsun ends up much closer to the very unpleasant truth than he would have liked. Whether he will emerge with his reputation and his sanity intact remains to be seen, but if the story so far is anything to go by, it's going to be one hell of a ride to find out.
Heads! is a departure from the anthology format you found successful with Brutal Bombshells and Rock In Purgatory. What made you decide to go down the serial route?
I've wanted to write an ongoing comic for a while, and have actually had Heads! in the pipeline for a couple of years now. Creating short-from comics has been really helpful for my visual storytelling skills, which I've made great use of when drawing Heads! The idea of a longer story was very daunting – especially one as ambitious as Heads! – so I decided to break it into parts instead. Heads! will be published as contained mini-series of five or six issues, each series wrapping up a particular story arc while paving the way for the next part of the story. This made it much easier for me to plan out and structure.
I've enjoyed working on the first few issues so far and like having the freedom to draw certain elements out for longer. This is something that I could never do with Rock In Purgatory and its great to be able to build more suspense and develop characters thoroughly.
It is clear from the first issue of Heads! that you have taken influence from different genres rather than the blood and guts you're usually associated with. Were you getting tired of the gore or did you want to challenge yourself with a new direction?
Not at all – I don't think I'll ever get bored of some good old fashioned slasher style horror! I'm keeping my hand in on the horror stuff by working with Ken Wynne to create Unfortunate Tales from Plant B for his website Attack From Planet B. However, with Heads! I did want to take things in a less overt direction. Heads! is much more creeping and sinister, with both real crime and fantasy crime, giving me an opportunity to pull at different strings. There will be some X-Files-style scares as much as there will be unnerving crime thriller moments that you'd associate with shows like Luther. I wanted to give Heads! the chance to delve into different genres, and as a result I think I've got a comic series that will be entertaining to a number of audiences.
I got the impression that Heads! is very noir with possible sci-if influences. Can you tell your fans how the idea of Heads! came about?
I first sketched one of the Heads! gang after seeing a half finished shop window display. It had three female mannequins with large placeholder polystyrene balls for the heads and hands. I played around with the sketches a bit and thought it would be cool to combine this type of look with a Dick Tracy-style detective. It fitted nicely with my B-movie tastes, as there are a lot of possibilities as to what could be under the masks. I realised this was something that could lead to a longer story and if I threw in some other characters to give it more depth that there was a chance I could add some conspiracy elements to it. What if Datsun was the only person who knew about these girls? What if he was the only one who ever saw the other strange happenings? So I read a load of comics like Dick Tracy and Blacksad to get my head around detectives and watched things like They Live and The X-Files to get me thinking about how to put sci-fi horror into a conspiracy story. After that I had so many ideas for where to take Heads! and I've been trying to incorporate as many of them as I can ever since.
Some of the dialogue is very old school, South London sounding. Is that something you were going for? What do you think your non-British readers will make of Private Detective Steve Datsun and his colourful words and phrases?
It's very much a conscious decision. I didn't want to go too clichéd cockney, but Datsun is a south London man who doesn't mince his words, so the dialogue had to reflect that. Datsun is quite a complex character who presents a lot of conflicting morals, much like a real person. He's neither hero not anti-hero, he is just a man who does his best, makes mistakes and gets on as best he can. As such, I wanted him to feel as real as possible in the fictional world I am building. Being a south Londoner myself, it made sense to me to base Datsun's dialogue and phrasing on how my friends and I speak to each other. There's a lot of friendly piss-taking, swearing and slang. It seems to be going down well overseas though. I've had some great responses from US readers who absolutely love how he speaks. Phrases like 'toerag' and 'lets have a butchers' are particularly popular!
Brutal Bombshells you commissioned me to write the scripts and with Rock In Purgatory you successfully combined both your illustrative and writing talents to come up with some fantastic one off stories. How did you find the challenge of writing Heads?
The planning and length was difficult to work out at the start, which is why I settled on this being a series of mini-series. Even that is a challenge, as I have a lot to cram in while keeping it interesting. Actually, the hardest part has been making the art flow well to retain the reader's interest, as a lot of Heads! is just two or three people having conversations. At this point in the story it's about building characters and setting the scene. I needed to do that well but also make sure that each issue is a captivating read. I've delved into using subtle imagery a lot more with Heads! than in anything else I've done and I think it's paying off. I've just finished the art for issue two, but there was a scene that really held me back. Datsun and his partner Higgins are having a phone conversation about a lot of essential plot points. It's a key scene but with them on the phone they can't even interact with each other! It took me a while, but I finally nailed it but having then doing two distinctly different things during the conversation, adding in some unusually focused illustrations which hint at a connections between the plot points. Now I have it finished I love the scene. Though there's better scenes for action and excitement, it's definitely the most important scene of that issue. I imagine these will continue to be the things that are hardest to do. That and editing all the pages for publishing, which drives me mental!
Can you tease your readers with what to expect in future issues?
The first series will showcase the Heads! gang and introduce a number of key characters as well as tons of false one – I've got more red herrings than a fish monger! There's a skull faced murderer stalking the streets, a dirty gangster who likes to dispose of his enemies by drowning them in filth encrusted toilet bowls and plenty of other nasty criminals to make you fear going out alone at night. I'm also bringing back Vortex Face, the demonic soul-sucking doom metal band featured in Rock In Purgatory. I felt like I'd only scratched the surface of the possibilities for them so I've put them front and centre as a major plot mechanism, using their origin in Rock In Purgatory as a lead in. All the crimes Datsun faces have a paranormal streak to them, but there's also a lot of science and logic behind them, meaning it's down to the reader to decide whether Datsun is right that things are extraordinary or whether they side with Higgins, his sidekick and voice of reason.
If you love good mystery, a suspenseful thriller or a scary sci-fi B-movie then you'll find something exciting and entertaining Heads!
I have some very grand plans for future series, but I'm keeping them under my hat for now…
What does the future have in store for you? Obviously more issues of Heads! are coming our way. Do you have any other projects in the pipeline?
Yes, more Heads! is just around the corner. Issue two is due out just after Christmas and I'm writing and drawing issue three now, ready for a spring release. Unfortunate Tales is due to continue and I'm talking to Ken about the possibility of another horror comic project as well. I've got a load of other comics ideas in mind which I hope to get started on toward the end of the year. The first of these is likely to be Tomato Latte, a teen slasher comic based around New Years Eve in 1999, very much in the vein of movies like Urban Legend and Cry Wolf. Plus I'm always open for commissions, so if you fancy a unique piece of custom art, just get in touch!
Posted in comics, Heads!, horrorTagged comics, crime noir, horror, illustration, indie comics, indie horror, popcorn horror, sci fi, small pressLeave a comment
What I did while you were at Thought Bubble
Posted on September 25, 2018 by silentpcomics
I wasn't at Thought Bubble celebrating the awesomeness of comics with the vast majority of the UK indie comics scene. But rather than dwell on what I missed (which looks to have been pretty amazing, judging by everyone's updates), I got stuck into doing loads of comic-related stuff myself.
Orbital Comics now stocking my titles
I was really pleased to deliver Heads! and Rock In Purgatory stock to the wonderful people at Orbital Comics in London's Leicester Square. A beaocn for London's comic crowd, Orbital is a brillant store whatever your comic book tastes. There is an entire small press and indie section of the shop, and I've managed to pick up some awesome titles there, such as Chunks by Matt Garvey, Bubbles O Seven from Bounce Comics and Katzine by Katriona Chapman. I love the fact that my books are now sharing shelf space with these kind of titles, and I hope that it helps to get my work in front of new readers. If you have a pull list at Orbital, or happen to be popping by for a comic fix please check out the indie section and pick up something new.
Heads! issue two….and three!
Heads! issue one is still warm from the presses and already my plans for the next issue are well in hand. All the art and editing is done, and I spent some time at the weekend starting the lettering. However, I put more effort into the art for issue three, which is already taking shape really well. The first three issues of the series will weave lots of mystery and delve into the character development of the main cast. I am also bringing Vortex Face into the mix. Rock In Purgatory fans will be familiar with Vortex Face, and will be pleased to hear their appearance in Heads! continues on from their origin. How do I managed to get a soul sucking doom metal band into the Heads! mix? You'll have to stay tuned to find out!
Interview in Popcorn Horror
I finished off my interview with horror magazine Popcorn Horror. You can get hold of their double length Halloween issue in October (follow @PopcornHorror on Twitter for updates). I was interviewed by horror writer Craig Jex for a piece about Heads! and my future comics project. The Halloween special has some great articles and a hellish cover by Chris Barnes of Brutal Posters, so its well worth checking out.
Green Lantern and Dick Tracy
I also caught up on some regular comics and grabbed some new ones. I'm all in awe of Dan Jurgens current run on Green Lanterns right now. I'm a big Lanterns fan and love where this story arc is going. Having Cyborg Superman taking over the power battery is a great idea, and the planning behind the coup is being excellently executed.
I also picked up the new Dick Tracy comic from IDW. I haven't have a chance to read it properly yet, but it looks like a brilliant addition to the Tracy line and has gone straight on my pull list.
Posted in comics, Heads!, Rock In PurgatoryTagged comics, dick tracy, green lantern, heavy metal, horror, popcorn horrorLeave a comment


text:
How to write a self biography in 70 words kindergarteners
How to write a thank you note ppt
Double major in creative writing and journalism
Home how can creative writing help you How do you think assumptions interfere with critical thinking
How do you think assumptions interfere with critical thinking
Kaufman and Mark A. We go where our attention is, and our attention is inherently limited. Dialogue is a powerful tool for moving beyond a false dichotomy.
See the fallacy of change, below. Above this threshold of an IQ ofif there is a relationship at all, it is small and weak. Concentrating on the intellectual components of the situation to distance yourself from the anxiety-provoking emotions associated with these situations.
Thus their coping skills to adapt to certain stresses have developed differently, making the individuals prone to certain types of anxieties. That is, direct and explicit instructions to think outside the box did not help. Elaboration — The amount of detail in the responses.
This could be because of an unpleasant past experience, and we are assuming the experience could repeat itself. Thus, the frontal lobe appears to be the part of the cortex that is most important for creativity.
Here is why I am optimistic on that score: Statistical analysis led to the recognition of creativity as measured as a separate aspect of human cognition to IQ -type intelligence, into which it had previously been subsumed. This joint focus highlights both the theoretical and practical importance of the relationship: Emotional patterns are changeable.
Overnight, it seemed that creativity gurus everywhere were teaching managers how to think outside the box.
The person realizes they have a problem. Similarly, a comedian gets intrinsic reward for "inventing a novel joke with an unexpected punch linerelated to the beginning of the story in an initially unexpected but quickly learnable way that also allows for better compression of the perceived data.
Our children and teachers are encouraged to follow routine algorithms rather than to excite that power of imagination and curiosity. The exercises are also a great way to break some bad mental habits and. Over Thanksgiving, I was discussing tulip subsidies with the pro-Bernie-Sanders faction of my family, and my uncle claimed that we needed college because "it teaches you how to think critically".
The evidence sort of supports him, but with the usual caveats and uncertainties. First of all, what the heck is critical thinking? How do you think assumptions might interfere with critical thinking?
What might you do to avoid making assumptions in your thinking? Assumption is a thing that is accepted as. Time-Limited Social Anxiety Group TBD Fee: $ (10 sessions) Leader: Michael Hickey, Ph.D. Social anxiety is a common form of anxiety and can significantly interfere with the quality of life of many individuals.
Do's: Instructional strategies that can lead to change in students' alternative conceptions (misconceptions) and to learning of new concepts and theories.
>Let's say"foreigners" (from where, by the way?) and 73 million gun owners. I imagine you could get millions, tens of millions, of young men willing to do violence if you promise them free looting in the US and sorta-kinda imply that they could stay and live in the US afterwards, even if it should be obvious to them that the US afterwards wouldn't.
Critical Thinking and the Nursing Practice.
Vocab, NCLEX Questions, Learning Outcomes, and other Questions Kozier Chapter 10 (Note: Critical thinking will cause this nurse to examine the assumptions made and gather more data before acting.) A client reports feeling hungry, but does not eat when food is served. "What do you think is so.
How to overwrite a cd-r disc compatibility
Reading is a creative process just as writing is
Creative spark
How to write a chapter reflection
How would you classify the starbucks
How to write a fugue pdf editor
How do you write a letter in chinese
How to write a sentence with context clues
Problem Solving & Metacognition in Education and Life


If no pain, then no love. If no darkness, no light. If no risk, then no reward. It's all or nothing. In this damn world, it's all or nothing.
When the darkness comes, keep an eye on the light - whatever that is for you - no matter how far away it seems.
At times, I feel overwhelmed and my depression leads me into darkness.
It is a mistake to fancy that horror is associated inextricably with darkness, silence, and solitude.


text:
Q: Remove a Commit from a PR in Git I created a PR but accidentally branched off the wrong commit.
commit 4
commit 3
commit 2
commit 1 <-- Want to get rid of first commit

Commit 1 is actually part of another PR. I want to get rid of the first commit because it has nothing to do with the PR i created. What is the best way to go about this?

A: The simplest, don't-really-have-to-think-about-it way is usually an interactive rebase. Do git rebase -i <pr-base> (long: git rebase --interactive <pr-base>), delete the first line, save and quit. That'll rewrite commit 1 out of history. Then it's probably git push --force-with-lease as usual to sync the changes in your case.

A: This will remove the commit like it never was there i.e. the changes will be undone and it will be removed from history for that branch. Logically this will not work if newer commits are based on changes in the commit you want to remove. (Git will tell you about this "conflict".)
On the branch of your pull request:

*

*git rebase HEAD~4 --interactive (4 is the number of commits to show)

*change the first word from pick to drop for the commit you want to remove. [Warning: Risk of data loss. Make sure this commit is part of another branch if you do not want to lose its content.]

*Save and close the "file".

*git push --force (This will forcefully overwrite the remote. Imo that is no problem if you do not expect anyone else working on this remote branch.)

(Well it looks like I was too slow.)

redpajama_set_name: RedPajamaStackExchange


text:
SIGN NOW: Demand Charges be Dropped Against Three Saudi Writer-Activists
Sign the petition to call on the Saudi Arabian government to drop all charges against these courageous writer-activists and 2019 Freedom to Write awardees. More
Add Your Name: Join 100 Writers, Journalists, Artists, and Activists in Calling on the United Nations to Investigate the Murder of Jamal Khashoggi
Sign the letter to UN Secretary-General António Guterres calling for an immediate investigation into the murder of journalist Jamal Khashoggi. More
Sign the Petition: Demand Donald Trump Hold Vladimir Putin to International Standards of Free Speech
Sign the petition calling on Donald Trump to hold Russia accountable to international standards of free speech and demand the release of Ukrainian writer and filmmaker Oleg Sentsov and… More
Demand Answers: Sign the petition to Attorney General Jeff Sessions to protect our free press
Sign the petition to Attorney General Jeff Sessions and the U.S. Department of Justice demanding an explanation of its extreme measures. More
Sign Now: Demand the release of Reuters journalists Wa Lone and Kyaw Soe Oo
We stand with Wa Lone and Kyaw Soe Oo in solidarity and join with PEN America in raising our voices to protect the values of freedom of expression and… More
Liu Xia Is Not Free: Call on President Xi Jinping to Release Poet from House Arrest
Oppose Trump Plan to Destroy Federal Arts Funding
Release Bigeldy Gabdullin, President of Kazakh PEN
Justice for Anna Politkovskaya: End impunity for crimes against journalists in Russia
Free Turkish Translator Necmiye Alpay


All that You Have to Know . . . and that's just the beginning. Utilizing Tabletop Works out. Carl Osaki, MSPH, RS Clinical Partner Teacher Bureau of Natural and Word related Wellbeing Sciences, SPHCM, College of Washington. Presentation Goals.
Presentation Objectives Describe the esteem and utilization of tabletop activities to get ready for general wellbeing crises. List 10 proposals for leading or encouraging an effective tabletop work out. Examine how to assess your office\'s status for leading a tabletop work out.
Learning Objectives By the finish of this introduction, learners will have the capacity to : Define a tabletop work out. Portray the reason and goals of tabletops. Talk about who utilizes tabletops and why. Depict issues ordinarily raised through tabletops. Talk about how to consider fitting tabletops and where to discover them. Propose issues to consider in planning or leading your own particular tabletop.
Your Experiences (1 of 3) Have you taken an interest in a tabletop work out? Yes No What was the most huge issue you encountered as a member all the while?
Your Experiences (1 of 2) Have you encouraged a tabletop work out? Yes No What was your most huge test in encouraging the tabletop?
Your Experiences (3 of 3) Have you outlined a tabletop work out? Yes No What assets/apparatuses did you use to help outline the tabletop?
What Is a Tabletop? A tabletop is a speculative situation (story) delineating a vast scale general wellbeing crisis. A facilitator leads the gathering (players) in an examination about a progression of episodes (issues) which rise in the situation. Players recognize and examine the strategies and techniques expected to address every episode. Players question to talk about the essentialness of the strategies to players\' own particular association (e.g., holes, duplications, perplexity, and whether individuals are prepared to do the arrangements). Tabletops are low worry—there are no correct answers.
Types of Tabletops Basic Players react to situation as it unfurls. Players can be from a blend of various orders, not really key leaders. More situated to adapting, instead of assessment of current framework. Propelled Players act in claim parts as characterized by the crisis reaction arrange, and are commonly those that would be included in basic leadership. Practice distinguishes holes, irregularities, or duplications in arrangements, arrangements, or methodology.
What Are Typical Tabletop Objectives? Recognize the strategy issues related with an open heath crisis. Recognize crevices in neighborhood readiness. Talk about measures that can be performed at the nearby level. Advance interagency joint effort and coordination. Perceive the parts of open authorities. Recognize preparing needs. Show an educating device. Assess self-announced evaluation.