/*
 * Basado en el código de James Padolsey
 * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
 * 
 * Usage:
 * 
 * DYURL([url]).file;     // = 'index.html'
 * DYURL([url]).hash;     // = 'top'
 * DYURL([url]).host;     // = 'abc.com'
 * DYURL([url]).query;    // = '?id=255&m=hello'
 * DYURL([url]).params;   // = Object = { id: 255, m: hello }
 * DYURL([url]).path;     // = '/dir/index.html'
 * DYURL([url]).segments; // = Array = ['dir', 'index.html']
 * DYURL([url]).port;     // = '8080'
 * DYURL([url]).protocol; // = 'http'
 * DYURL([url]).source;   // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'
 */

function DYURL(url) {
	var a =  document.createElement('a');
	a.href = url = url && url.constructor == String ? url : document.location.toString(); 
	return {
		source: url,
		protocol: a.protocol.replace(':',''),
		host: a.hostname,
		port: a.port,
		query: a.search,
		params: (function(){
			var ret = {},
				seg = a.search.replace(/^\?/,'').split('&'),
				len = seg.length, i = 0, s;
			for (;i<len;i++) {
				if (!seg[i]) { continue; }
				s = seg[i].split('=');
				ret[s[0]] = s[1];
			}
			return ret;
		})(),
		file: (a.pathname.match(/\/([^\/?#]+)$/i) || [null,''])[1],
		hash: a.hash.replace('#',''),
		path: a.pathname.replace(/^([^\/])/,'/$1'),
		relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [null,''])[1],
		segments: a.pathname.replace(/^\//,'').split('/')
	};
}
