var parseUri =  function (str) {
	this.url = str;
	this.options = {
		strictMode: false,
		key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
		q:   {
			name:   "queryKey",
			parser: /(?:^|&)([^&=]*)=?([^&]*)/g
		},
		parser: {
			strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
			loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
		}
	}
	
	this.parse = function(){
		var	o   = this.options,
			m   = o.parser[o.strictMode ? "strict" : "loose"].exec(this.url),
			uri = {},
			i   = 14;

		while (i--) uri[o.key[i]] = m[i] || "";

		uri[o.q.name] = {};
		uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
			if ($1) uri[o.q.name][$1] = $2;
		});

		return uri;
	}
	
	this.hier = function(strD){
		var u = strD;
		var c = u.split('/');
		c[0] = 'home';
		for(i = 0; i < c.length; i++){
		 if(c[i].length == 0){
		  c.splice(i,1);
		 }
		}
		if (c[c.length - 1].match(/[^0-9]/g)) {
		}else{
		  c.splice(c.length - 1,1);
		}
		return c.join(':');
		
	}

	this.type = function(strD){
		var u = strD;
		var c = u.split('/');
		c[0] = 'home';
		for(i = 0; i < c.length; i++){
		 if(c[i].length == 0){
		  c.splice(i,1);
		 }
		}
		return 
		
	}

	
	this.itemID = function(strD){
		var u = strD;
		var c = u.split('/');
		c.reverse();
		for(i = 0; i < c.length; i++){
		 if(c[i].length == 0){
		  c.splice(i,1);
		 }
		}
		if (c[0].match(/[^0-9]/g)) {
			return '';
    	}else{
			return c[0];
		}
	}
	
};
