var StringUrlSegment = {
	setHashSegment: function (url, prefix, value) {
		var segments = []
		var u = url
		var index = 0
		var has_hash = false
		if (url.indexOf('#') != -1) {
			has_hash = true
			segments = url.substring(url.indexOf('#')+1).split('/').without('')
			u = url.substring(0, url.indexOf('#'))
			var segment = segments.find(function(s){return s.startsWith(prefix+':')})
			index = segments.indexOf(segment)
			if (index == -1) index = segments.length
		}
		if (!value && value !== 0) segments[index] = null
		else segments[index] = prefix+':'+value
		segments = segments.compact()

		if (!segments.length) return u+(has_hash?'#':'')

		return u+'#'+segments.join('/')
	},
	getHashSegment: function(url, prefix) {
		if (!url) return null
		var segments = url.substring(url.indexOf('#')+1).split('/')
		var segment = segments.find(function(s){return s.startsWith(prefix+':')})
		return segment ? segment.split(':')[1] : null
	}
}
var UrlSegment = {
	setHashSegment: function(prefix, value) {
		var newurl = StringUrlSegment.setHashSegment(document.location.href, prefix, value)
		if (newurl != document.location.href) document.location.href = newurl
		return document.location.href
	},
	getHashSegment: function(prefix) {
		return StringUrlSegment.getHashSegment(document.location.hash, prefix)
	}
}
function assert(expr1, expr2, bool) {
	var res = expr1 == expr2
	if (res != bool) console.error('FAILED: ', expr1, '==', expr2, res)
	else console.info('PASSED: ', expr1, '==', expr2, res)
}
function assertTrue(expr1, expr2) {
	assert(expr1, expr2, true)
}

/** TESTS *
	assertTrue(StringUrlSegment.setHashSegment('http://vg.no', 'img', 4), 'http://vg.no#img:4')
	assertTrue(StringUrlSegment.setHashSegment('http://vg.no#fd:4', 'img', 4), 'http://vg.no#fd:4/img:4')
	assertTrue(StringUrlSegment.setHashSegment('', 'img', 4), '#img:4')
	assertTrue(StringUrlSegment.setHashSegment('#fd:43', 'img', 4), '#fd:43/img:4')

	assertTrue(StringUrlSegment.setHashSegment('/dfd', 'img', 4), '/dfd#img:4')
	assertTrue(StringUrlSegment.setHashSegment('#', 'img', 4), '#img:4')

	assertTrue(StringUrlSegment.setHashSegment('http://vg.no', 'img', null), 'http://vg.no')
	assertTrue(StringUrlSegment.setHashSegment('http://vg.no#', 'img', null), 'http://vg.no#')
	assertTrue(StringUrlSegment.setHashSegment('http://vg.no#fd:23/img:42', 'img', null), 'http://vg.no#fd:23')
	assertTrue(StringUrlSegment.setHashSegment('http://vg.no#img:4', 'img', null), 'http://vg.no#')

/**/
