Bc = {
	config: {},
	
	_loadedScripts: {},
	
	onLoad: function() {
		
	},
	
	include: function(src){
		document.write(
			'<script type="text/javascript" src="/assets/components/' + src + '"></script>'
		);
	},
	
	loadScript: function(src, onLoadHandler){
		if(this._loadedScripts[src]){
			if(this._loadedScripts[src].state == 'loading'){
				this._loadedScripts[src].handlers.push(onLoadHandler);
			} else {
				onLoadHandler();
			}
			return;
		} else {
			this._loadedScripts[src] = {
				state: 'loading',
				handlers: [ onLoadHandler ]
			};
		}
		
		var scriptTag = document.createElement("script");
		scriptTag.src = src;
		
		var t = this;
		var isLoaded = false;
		var _onLoadSysHandler = function(){
			if (
				!isLoaded &&
				(!this.readyState || this.readyState === "loaded" || this.readyState === "complete")
			) {
				isLoaded = true;
				t._loadedScripts[src].state = 'loaded';
				for(var i in t._loadedScripts[src].handlers){
					(t._loadedScripts[src].handlers[i])();
				}
			}
		}
		
		if ($.browser.msie) {
			scriptTag.onreadystatechange = _onLoadSysHandler;
		} else {
			scriptTag.onload = _onLoadSysHandler;
		}
		
		document.getElementsByTagName("head")[0].appendChild(scriptTag);
	}
};
Bc.include('bcMain/js/libs/jQuery/jquery.print.js');
Bc.include('bcMain/js/libs/WidgetManager.js');

jQuery.fn.getJsAttr = function(attrName){
	var elemClass = this.attr('class');
	if(!elemClass) return '';
	
	var matchData = 
		elemClass.match(new RegExp('js-'+attrName+'-\'([^\']*)\'')) ||
		elemClass.match(new RegExp('js-'+attrName+'-([^\\s]*)'));
	
	return matchData ? matchData[1] : '';
};

jQuery.fn.center = function() {
	var $w = $(window);
	
	this.css({
		position: 'absolute',
		top: ($w.height() - this.height()) / 2 + $w.scrollTop() + 'px',
		left: ($w.width() - this.width()) / 2 + $w.scrollLeft() + 'px'
	});
	return this;
};

jQuery.fn.toggleTo = function(toggleFlag){
	return this.each(function(){
		var $this = $(this);
		
		if (toggleFlag === undefined) {
			var setTo = $this.is(':hidden');
		} else {
			var setTo = toggleFlag;
		}
		
		if(setTo){
			$this.show();
		} else {
			$this.hide();
		}
	});
};

jQuery.fn.outerHTML = function(){
	var $t = $(this);
	if($t[0].outerHTML) {
    	return $t[0].outerHTML;
    } else {
        var content = $t.wrap('<div></div>').parent().html();
        $t.unwrap();
        return content;
    }
}

jQuery.fn.print = function(){
	
}

$(function(){ Bc.onLoad(); });
