// webtools webtools.js v0.1.0, Tue July 7 00:00:00 +0900 2009

// Copyright 2009 LastDragon (http://www.newstools.kr/)
//
// For permission, http://creativecommons.org/licenses/by/2.0/kr/

var Webtools = {
	Version: '0.1.0',
	require: function(libraryName) {
		document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
	},
	REQUIRED_PROTOTYPE: '1.6.0.3',
	REQUIRED_SCRIPTACULOUS: '1.8.2',
	load: function() {
		function convertVersionString(versionString) {
			var v = versionString.replace(/_.*|\./g, '');
			v = parseInt(v + '0'.times(4-v.length));
			return versionString.indexOf('_') > -1 ? v-1 : v;
		}

		if((typeof Prototype=='undefined') ||
			(typeof Element == 'undefined') ||
			(typeof Element.Methods=='undefined') ||
			(convertVersionString(Prototype.Version) <
				convertVersionString(Webtools.REQUIRED_PROTOTYPE)))
		throw("webtools requires the Prototype JavaScript framework >= " +
			Webtools.REQUIRED_PROTOTYPE);

		if(convertVersionString(Scriptaculous.Version) <
			convertVersionString(Webtools.REQUIRED_SCRIPTACULOUS))
		throw("webtools requires the script.aculo.us JavaScript library >= " +
			Webtools.REQUIRED_SCRIPTACULOUS);

		var js = /webtools\.js(\?.*)?$/;
		$$('head script[src]').findAll(function(s) {
			return s.src.match(js);
		}).each(function(s) {
			var path = s.src.replace(js, ''),
			includes = s.src.match(/\?.*load=([a-z,]*)/);
			(includes ? includes[1] : 'tab,listbox,skyscraper,clickablelistener').split(',').each(
				function(include) { Webtools.require(path+include+'.js') });
		});
	}
};

Webtools.load();
