Preceptor = {};
Preceptor.util 	  = {};
Preceptor.widget  = {};
Preceptor.browser = {};
Preceptor.regex   = {};

Preceptor.browser.ie = ((navigator.userAgent.toLowerCase().indexOf( "msie" ) != -1) && (navigator.userAgent.toLowerCase().indexOf( "opera" ) == -1) && (navigator.userAgent.toLowerCase().indexOf( "webtv" ) == -1));
Preceptor.browser.gecko = (navigator.userAgent.toLowerCase().indexOf( "gecko" ) != -1);
Preceptor.browser.safari = (navigator.userAgent.toLowerCase().indexOf( "safari" ) != -1);
Preceptor.browser.konqueror = (navigator.userAgent.toLowerCase().indexOf( "konqueror" ) != -1);

Preceptor.regex.ScriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';

Preceptor.util.evalScripts = function( html ) {
    return Preceptor.util.extractScripts( html ).map( function( script ){ return eval( script ); } );
}

Preceptor.util.extractScripts = function( html ) 
{
	var matchAll = new RegExp( Preceptor.regex.ScriptFragment , 'img');
	var matchOne = new RegExp( Preceptor.regex.ScriptFragment , 'im');
	
	 return ( html.match( matchAll ) || [] ).map( function( scriptTag ) {
	    	return ( scriptTag.match( matchOne ) || [ '', '' ] )[1];
	 });
}