(function() {
	//add event listener.
	var addEvent = function( obj, handler, func ) {
		if( obj.addEventListener ) {
			obj.addEventListener( handler, func, false );
		} else {
			obj.attachEvent( 'on' + handler, func );
		}
	}
	
	
	var _coverFunc;
	var _coverObj;
	
	
	var _remove = function( evt ) {
		if( evt ) {
			if( evt.stopPropagation ) {
				evt.stopPropagation();
			} else {
				evt.cancelBubble = true;
			}
		}
		
		_coverObj.parentNode.removeChild( _coverObj );
	}
	
	var _removeObject = function( evt ) {
		_coverFunc();
		_remove( evt );
	}
	
	var _cover = function( func ) {
		//registration function.
		_coverFunc = ( !!func ) ? func : new Function();
		
		//create object.
		_coverObj = document.createElement( 'div' );
		var _cs = _coverObj.style;
		_cs.backgroundColor = 'white';
		_cs.opacity = 0;
		_cs.filter = 'alpha(opacity=0)';
		_cs.position = 'absolute';
		_cs.top = 0;
		_cs.left = 0;
		_cs.width = '100%';
		_cs.zIndex = 1000;
		_cs.height = ( document.documentElement.scrollHeight < document.body.scrollHeight ) ? document.body.scrollHeight + 'px' :
																																													document.documentElement.scrollHeight + 'px';
		
		addEvent( _coverObj, 'click', _removeObject );
		
		//add the above object.
		document.body.appendChild( _coverObj );
	}
	
	window.coveObject = _cover;
	window.removeCover = _remove;
})();