/*
	JS Extending Library
	URL functions.
	build 200806061950
*/

var url = {
	getQuery: function(URL) {
		var q = {}, qy;
		if (URL.indexOf('?') == -1) return false;

		var RE = /(\?|\&)([^\=]+)\=([^&]*)/ig;
		while (qy = RE.exec(URL)) q[qy[2]] = qy[3];

		return q;
	},

	buildQuery: function(arr, escape) {
		if (! isset(escape)) var escape = false;
		var el, res = [];
		if (escape) {
			for (el in arr) res[res.length] = encodeURIComponent(el) +'='+ encodeURIComponent(arr[el]);
		} else {
			for (el in arr) res[res.length] = el +'='+ arr[el];
		}
		return res.join('&');
	},

	getPath: function(URL) {
		var p = {};
		if (URL.indexOf('?') != -1) URL = URL.substr(0, URL.indexOf('?'));
		URL = URL.replace('\\', '/');
		if (URL.search(/^(http|ftp|https):\/\//i) != -1) URL = URL.replace(/^(http|ftp|https):\/\/[^\/]+\//i, '');
		if (URL[URL.length - 1] == '/') URL = URL.substr(0, URL.length - 1);
		return URL.split('/');
	},
	
	parse: function(URL) {
		var res = {scheme: '', host: '', path: '', query: ''};
		var tmp = URL.split(/[\:\?]+/);
		res['scheme'] = tmp[0];
		tmp[0] = tmp[1].split(/[\/]+/g);
		if (!isIE()) tmp[0].shift();
		res['host'] = tmp[0].shift();
		res['path'] = '/'+ tmp[0].join('/');
		res['query'] = tmp[2];
		return res;
	}
};

function parse_url(link) {
	return url.parse(link);
}
