/**
 * @author Vladimir Kolesnikov <voloko@gmail.com>
 * @copyright (c) Vladimir Kolesnikov <voloko@gmail.com>
 */

var js = {
	rootUrl: 'content/scripts/',
	context: this
}

var css = {
	rootUrl: 'content/style/'
}

js.getXHTTPTransport = function() {
	var result = false;
	var actions = [
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ];
    for(var i = 0; i < actions.length; i++) {
    	try{
    		result = actions[i]();
    		break;
    	} catch (e) {}	
    }
    return result;
 }

js.pathToUrl = function(path) {
	return js.rootUrl + path.replace(/\./g, '/') + '.js';	
}

css.pathToUrl = function(path) {
	return css.rootUrl + path.replace(/\./g, '/') + '.css';	
}

js.loadedModules = {};

js.include = function(path)
{
	if (js.loadedModules[path]) return false;
	
	var transport = js.getXHTTPTransport();
	transport.open('GET', js.pathToUrl(path), false);
	transport.send(null);
	
	var code = transport.responseText;
	(typeof execScript != 'undefined') ? execScript(code) : 
		(js.context.eval ? js.context.eval(code) : eval(code));
	js.loadedModules[path] = true;
	
	return true;
}

css.include = function(path)
{
	var HeadID = document.getElementsByTagName('head')[0];
	var CSSNode = document.createElement('link');
	CSSNode.type = 'text/css';
	CSSNode.rel = 'stylesheet';
	CSSNode.href = css.pathToUrl(path);
	CSSNode.media = 'screen';
	HeadID.appendChild(CSSNode);
}
