/**
* Created windows list
*
* @var array
* @access private
*/
var _created_windows = new Array();

/**
* Convert bool to a string value
*
* @params bool
* @return string yes / no
*/
function boolToYesNo( value ) {
	return( value ? 'yes' : 'no' );
}

/**
* Creates a window from the parameters passed.
*
* @params object window config
* 		int x - x assis window starting position [ x assis center ]
*		int y - y assis window starting position [ y assis center ]
*		int width - window width [ 400 ]
*		int height - window height [ 400 ]
*		bool nodups - allow duplicate windows [ true ]
*		bool scroll - show scrollbars [ true ]
*		bool status - show status bar [ false ]
*		bool location - show location bar [ false ]
*		bool menubar - show menu bar [ false ]
*		bool toolbar - show toolbar [ false ]
*		bool hotkeys - enable hotkeys [ false ]
*		bool fullscreen - enable fulscreen [ false ]
*		bool resize - enable window resize [ false ]
*		string name - window name [ dialog ]
*		string url - window url [ about:blank ]
* @return object window
*/
function createWindow ( oPConfig ) {

	var ret_val = null;
	
	var window_params = '';
	
	var oConfig = {
		
		'x' 		: -1,
		'y' 		: -1,
		'width' 	: 400,
		'height' 	: 400,
		'nodups'	: true,
		'scroll'	: true,
		'status'	: false,
		'location'	: false,
		'menubar'	: false,
		'toolbar'	: false,
		'hotkeys'	: false,
		'fullscreen': false,
		'resize'	: false,
		'name'		: 'dialog',
		'url'		: 'about:blank'
		
	}

	if( oPConfig && typeof( oPConfig ) == 'object' ) {
		
		for( var idx in oPConfig ) {
			if( typeof( oConfig[idx] ) != 'undefined' ) {
				oConfig[idx] = oPConfig[idx];
			}
		}
		
		if( oConfig.nodups && _created_windows[oConfig.name] ) {
			
			try {
				_created_windows[oConfig.name].close();
			} catch ( e ) {
				// oj, exceptionas =|
			}
			
			_created_windows[oConfig.name] = null;
		
		}
		
		if( oConfig.x < 0 ) {
			oConfig.x = Math.round( ( screen.height - oConfig.height ) / 2 );
		}
		
		if( oConfig.y < 0 ) {
			oConfig.y = Math.round( ( screen.width - oConfig.width ) / 2 );
		}
		
		window_params = 
			
			'top=' + oConfig.x + ',' +
			'left=' + oConfig.y + ',' +
			'width=' + oConfig.width + ',' +
			'height=' + oConfig.height + ',' +
			'location=' + boolToYesNo( oConfig.location ) + ',' +
			'menubar=' + boolToYesNo( oConfig.menubar ) + ',' +
			'toolbar=' + boolToYesNo( oConfig.toolbar ) + ',' +
			'hotkeys=' + boolToYesNo( oConfig.hotkeys ) + ',' +
			'fullscreen=' + boolToYesNo( oConfig.fullscreen ) + ',' +
			'resizable=' + boolToYesNo( oConfig.resize ) + ',' +
			'status=' + boolToYesNo( oConfig.status ) + ',' +
			'scrollbars=' + boolToYesNo( oConfig.scroll );
		
		ret_val = window.open( oConfig.url, oConfig.name, window_params );
		
		_created_windows[oConfig.name] = ret_val;
		
	}
	
	return( ret_val );

}