extends layout
include includes/item

mixin renderObject(property, value, path)
	- var pathJoined = path ? path.join(':') : property
	div(id=pathJoined + 'Div')
		each innerValue, innerProperty in value
			if typeof innerValue != 'object'
				+render(innerProperty, innerValue, path ? path.concat([ innerProperty ]) : [ innerProperty ])
	
		each innerValue, innerProperty in value
			if typeof innerValue == 'object'
				+render(innerProperty, innerValue, path ? path.concat([ innerProperty ]) : [ innerProperty ])
	

mixin render(property, value, path)
	- var pathJoined = path ? path.join(':') : property
	- var jqueryPathJoined = path ? path.join('\\\\:') : property
	- var label = labels.get(pathJoined, property)
	if property == 'type' || property == 'version' || property == 'use'
	else if property.endsWith('Preference')
		.form-group
			label!= label
			select.form-control(id=pathJoined, name=pathJoined)
				option(value = 'required', selected = value === 'required')= 'Required'
				option(value = 'preferred', selected = value === 'preferred')= 'Preferred'
				option(value = 'optional', selected = value === 'optional')= 'Optional'
				option(value = 'disfavoured', selected = value === 'disfavoured')= 'Disfavoured'
				option(value = 'unwanted', selected = value === 'unwanted')= 'Unwanted'
		
	else if typeof value == 'object'
		if path.length == 1
			hr
			h2(id=pathJoined + 'Head')!= label
		else if path.length == 2
			h3(id=pathJoined + 'Head')!= label
		else if path.length == 3
			h4(id=pathJoined + 'Head')!= label
			
		+renderObject(property, value, path)
		
		if value.use != undefined
			script(type='text/javascript').
				$('##{jqueryPathJoined}Head').html('<div class="checkbox"><label><input type="checkbox" id="#{pathJoined}:use" name="#{pathJoined}:use" #{value.use ? "checked" : ""}></input>!{label}</label></div>');
				$('##{jqueryPathJoined}\\:use').change(function() {
					$('##{jqueryPathJoined}Div').toggle(this.checked);
				}).change();
				
				
	else if typeof value == 'boolean'
		+check(pathJoined, label, value)
	else if typeof value == 'number'
		+input('number', pathJoined, label, value)
	else
		+input('text', pathJoined, label, value)

block content
	.col-sm-6.col-sm-offset-3
		h1
			+fa('wrench', 'Settings')

		form(action='/config', method='POST')
			+renderObject('config', config)
			
			+faButtonSubmit('save', 'Save')
			if config.version != 0
				|  
				+buttonPrimary('/', 'Back')
			#bottom &nbsp;