var toggle=0;
var buttons = null;
var suppress = true;

var BUTTON_A = 13;
var BUTTON_MINUS = 170;
var BUTTON_B = 171;
var BUTTON_1 = 172;
var BUTTON_2 = 173;
var BUTTON_PLUS = 174;
var BUTTON_UP = 175;
var BUTTON_DOWN = 176;
var BUTTON_RIGHT = 177;
var BUTTON_LEFT = 178;

function CreateHTML(flashgame,width,height,pagecolor,bgcolor)
{
    //Make the necessary body mods
    var body = document.body;
    document.onkeypress = 'return OnKeyPress(event)';
    document.onkeydown = 'return OnKeyDown(event)';
    document.onkeyup = 'return OnKeyUp(event)';
    document.onmousedown = 'return OnMouseDown(event)';
    document.onmouseup = 'return OnMouseUp(event)';

    setInterval('return WiiMotes()', 15);
    body.style.backgroundColor = pagecolor;
    
    //Then hide the optional javascript warning
    document.getElementById('jswarning').style.visibility = 'hidden';
 
    //Then stuff in the first reflector
    var bodyHTML = '<div id="WiiBounce0" style="position:absolute;top:0px;left:0px;width:1px;height:1px;">';
    bodyHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="WiiBounceFlash1" align="middle">';
    bodyHTML += '<param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="WiiBounce1.swf" /><param name="quality" value="high" /><param name="bgcolor" value="'+pagecolor+'"/></object>';
    bodyHTML += '</div>';
    
    //Then stuff in the second reflector
    bodyHTML += '<div id="WiiBounce1" style="position:absolute;top:0px;left:0px;width:1px;height:1px;">';
    bodyHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="WiiBounceFlash2" align="middle">';
    bodyHTML += '<param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="WiiBounce2.swf" /><param name="quality" value="high" /><param name="bgcolor" value="'+pagecolor+'"/></object>';
    bodyHTML += '</div>';

    //Then stuff in the third reflector
    bodyHTML += '<div id="WiiBounce2" style="position:absolute;top:0px;left:0px;width:1px;height:1px;">';
    bodyHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="WiiBounceFlash2" align="middle">';
    bodyHTML += '<param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="WiiBounce3.swf" /><param name="quality" value="high" /><param name="bgcolor" value="'+pagecolor+'"/></object>';
    bodyHTML += '</div>';

    //Then stuff in the fourth reflector
    bodyHTML += '<div id="WiiBounce3" style="position:absolute;top:0px;left:0px;width:1px;height:1px;">';
    bodyHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="WiiBounceFlash2" align="middle">';
    bodyHTML += '<param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="WiiBounce4.swf" /><param name="quality" value="high" /><param name="bgcolor" value="'+pagecolor+'"/></object>';
    bodyHTML += '</div>';

    //Then put in the user's flash file and center it nicely
    var topPos = (500-height)/2;
    var mL = (0-width)/2;
    bodyHTML += '<div id="GameContainer" style="position:absolute;top:'+topPos+'px;left:50%;width:'+width+'px;height:'+height+'px;margin-left:'+mL+'px;">';
    bodyHTML += '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"';
    bodyHTML += 'WIDTH="'+width+'" HEIGHT="'+height+'" id="WiiFlashGame"><PARAM NAME=movie VALUE="'+flashgame+'"><PARAM NAME=quality VALUE=high><PARAM NAME=bgcolor VALUE='+bgcolor+'><EMBED src="'+flashgame+'" quality=high bgcolor='+bgcolor+' WIDTH="'+width+'" HEIGHT="'+height+'"';
    bodyHTML += 'NAME="flashgame" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>';
    bodyHTML += '</div>';
    
    document.write(bodyHTML);
}

function ParseWiiButton(index,down)
{
    if(index == BUTTON_A)
        buttons[0] = down;
    else
        buttons[index-169] = down;
}

function InitWiiMoteState()
{
    buttons = new Array();
    for(var i = 0; i < 10; i++)
        buttons[i] = false;
}

function StoreWiiMoteState()
{


    var bs = 0;
    var dpad = 0;
    var exp = 2;
    for(var i = 6; i < 10; i++)
    {
        if(buttons[i])
            dpad += exp;
        exp *= 2;
    }
	dpad += exp; //this is the primary WiiMote, so it will push back one more value to identify itself to the WiiMote.as Class.
	
	exp *= 2;
	dpad += exp; //this wiimote is available, so like the other wiimotes it tells the program it is available.
    
	exp = 2;
	for(var i = 0; i < 6; i++)
	{
		if(buttons[i])
		bs += exp;
		exp *= 2;
	}

	    	var div = document.getElementById("WiiBounce0");
			div.style.width = bs+"px";
			div.style.height = dpad+"px";

}


function WiiMotes()
{


	for (var n = 0; n < 4; n++)
	{
		var pad = opera.wiiremote.update(n)

		if (pad.isBrowsing == 0 && pad.isEnabled == 1)
		{
		var bs = 0;
		var dpad = 0;
		var exp = 2;	
		//////////// dpad ///////////////////
	
			if (pad.hold & 8)
				dpad += exp;
	
			exp *= 2;
			if (pad.hold & 4)
				dpad += exp;
		
			exp *= 2;
			if (pad.hold & 2)
				dpad += exp;
		
			exp *= 2;
			if (pad.hold & 1)
				dpad += exp;

			exp *= 2;				//this WiiMote is not primary, so do not send this value.
			exp *= 2;
			dpad += exp; 				// tell the MarioToo Library that this wiimote is available
			
		/////////////  buttons ////////////
			exp = 2;
		
			if (pad.hold & 2048)
				bs += exp;

			exp *= 2;	
			if (pad.hold & 4096)
				bs += exp;
		
		
				exp *= 2;
			if (pad.hold & 1024)
				bs += exp;

			exp *= 2;
			if (pad.hold & 512)
				bs += exp;
			
			exp *= 2;
			if (pad.hold & 256)
				bs += exp;
		

			exp *= 2;
			if (pad.hold & 16)
				bs += exp;
			
			var div = document.getElementById("WiiBounce"+n);
				div.style.width = bs+"px";
				div.style.height = dpad+"px";
		}
	}
}


InitWiiMoteState();

function OnKeyPress( event )
{
    if(suppress)
    {
        switch(event.which)
        {
            case BUTTON_A:
            case BUTTON_MINUS:
            case BUTTON_B:
            case BUTTON_1:
            case BUTTON_2:
            case BUTTON_PLUS:
            case BUTTON_UP:
            case BUTTON_DOWN:
            case BUTTON_RIGHT:
            case BUTTON_LEFT:
                return false;
        }
    }
};

function OnKeyUp( event ) {

	
	ParseWiiButton(event.keyCode,false);
	StoreWiiMoteState();
    return false;
}

function OnKeyDown( event ) {
	ParseWiiButton(event.keyCode,true);
	StoreWiiMoteState();
	document.getElementById("WiiFlashGame").focus();
    return false;
}

function OnMouseUp( event ) {

	
	ParseWiiButton(BUTTON_A,false);
	StoreWiiMoteState();
    return false;
}

function OnMouseDown( event ) {
	ParseWiiButton(BUTTON_A,true);
	StoreWiiMoteState();
	document.getElementById("WiiFlashGame").focus();
    return false;
}