<head>
	<style type="text/css" title="AppleStyle">
            
        .dialog-background {
            position:absolute;
            top:75px;
            left:7px;
            background-color:rgba(0,0,0,0.82);
            width:284px;
            height:212px;
        }

        .dialog-cancel-button {
            position:absolute;
            top:162px;
            right:150px;

        }

        .dialog-button {
            font: 12px "Helvetica Neue";
            font-weight:bold;
            color: white;
            opacity:0.5;
        }	
        
        </style>
        <script>
        
            var dialog = null;
            
            
            function load ()
            {
                dialog = new Dialog ();		
            }
            
            function Dialog ()
            {
                var div = document.createElement('div');
                div.setAttribute('id', 'dialog-background');
                div.setAttribute('class', 'dialog-background');
                
                var button_div = document.createElement('div');
                button_div.setAttribute('class', 'dialog-button dialog-cancel-button');
                div.appendChild (button_div);
                createDialogButton (button_div, 'Cancel', 66);
                
                document.body.appendChild(div);
                this.background = div;	
            }
            
            function createDialogButton (div, title, minwidth)
            {
                element = document.createElement('div');
                element.setAttribute ("style", 'display:inline-block;text-align:center;line-height:24px;background:url(button_center.png) repeat-x top left;');	
                div.appendChild (element);
                element.innerHTML = title;
            }
        
        </script>	
</head>

<body onload='load();'>

</body>
</html>