var routes = require('kem/dom/routes');
var qs = require('kem/fn/qs').parse;
var Router = Object.create(HTMLAnchorElement.prototype);
var max = routes.length;

var params = function(a, isModal){

	var isModal = Boolean(a.dataset.modal), data;

	for(let p = a.pathname, i = 0, q, m; i < max; i++){
		if(m = routes[i][1].exec(p)){

			m.splice(0, 1);
			q = qs.apply(null, a.search.split('?')).query;

			data = ['link', true];

			if(isModal){
				q.modal = 1;
				data[1] = false;
			};

			data.push([routes[i], m, q]);

			return data;
		}
	}

	return data;
};

Router.createdCallback = function(){
	var param = null;

	this.addEventListener('click', function(e){

		e.preventDefault();

		if(!param) param = params(this, isModal);

		param ? app.box.emit.apply(app.box, param) : this.removeListener('click');
	});
};

module.exports = document.registerElement('kem-router', {
	prototype: Router,
	extends: 'a'
});