﻿var pageHost;
var shell,buttons,tbOutcome,meHand,oppHand,scoreboard,homeWin,homeRock,homePaper,homeScissors,awayWin,awayRock,awayPaper,awayScissors,progIntro,progTxtIntro,progRectIntro,progRectIntroOuter,progMedia,progTxtMedia,progRectMedia;
var choiceRock,choicePaper,choiceScissors,oppChoiceRock,oppChoicePaper,oppChoiceScissors,recordWin,recordLose,recordTie;
var choiceHistory = [];

window.onresize = Resize;
function Resize()
{
    //when maximizing in IE, the resize event fires before the actual resize
    //by setting the timeout, maximize and minimize works
    setTimeout('resize();',1);
}
function root_Loaded(sender, args) {
    pageHost = sender.getHost();
    choiceRock = choicePaper = choiceScissors = oppChoiceRock = oppChoicePaper = oppChoiceScissors = recordWin = recordLose = recordTie = 0;
    PageMethods.GetXaml('Player.xaml',OnLoadPageCompleted);
}
function OnLoadPageCompleted(result)
{
    var ctrl = pageHost.createFromXaml(result);
    pageHost.findName('contentPlaceHolder').children.add(ctrl);
    LoadObjects(['shell','buttons','tbOutcome','meHand','oppHand','scoreboard','homeWin','homeRock','homePaper','homeScissors','awayWin','awayRock','awayPaper','awayScissors','progIntro','progTxtIntro','progRectIntro','progRectIntroOuter','progMedia','progTxtMedia','progRectMedia']);
    
    resize();
        
    InitializeSettings(true);
    InitMediaDownload();
}

function LoadObjects(arrObj)
{
    for(var i=0,obj=arrObj[i];obj;obj=arrObj[++i])
        eval(obj + ' = pageHost.findName("' + obj + '");');
}

function EnableRPSButtons()
{
    //enable buttons
    AddButtonMouseEvents(pageHost.findName("Rock"));
    AddButtonMouseEvents(pageHost.findName("Paper"));
    AddButtonMouseEvents(pageHost.findName("Scissors"));
    buttons.opacity = 1;
}
function DisableRPSButtons()
{
    //disable buttons
    RemoveButtonMouseEvents(pageHost.findName("Rock"));
    RemoveButtonMouseEvents(pageHost.findName("Paper"));
    RemoveButtonMouseEvents(pageHost.findName("Scissors"));
    buttons.opacity = 0.2;
}
function AddButtonMouseEvents(button)
{
    try
    {
        button.addEventListener("MouseEnter", "javascript:handleMouseEnter");
        button.addEventListener("MouseLeave", "javascript:handleMouseLeave");
        button.addEventListener("MouseLeftButtonUp", "javascript:handleMouseUp");
        button.addEventListener("MouseLeftButtonDown", "javascript:handleMouseDown");
    }
    catch(ex){}
}
function RemoveButtonMouseEvents(button)
{
    try
    {
        button.removeEventListener("MouseEnter", "javascript:handleMouseEnter");
        button.removeEventListener("MouseLeave", "javascript:handleMouseLeave");
        button.removeEventListener("MouseLeftButtonUp", "javascript:handleMouseUp");
        button.removeEventListener("MouseLeftButtonDown", "javascript:handleMouseDown");
    }catch(ex){}
}

function InitializeSettings(isStartUp)
{
    if( isStartUp )
    {
        var c = readCookie("RPSCollection");
        if( c != null )
            _currentCollectionIndex = c;
    }
    else
        createCookie("RPSCollection",_currentCollectionIndex,7);
    
    var collection1 = pageHost.findName("settingsCollection1");
    var collection2 = pageHost.findName("settingsCollection2");
    
    try{
        collection1.removeEventListener("MouseLeftButtonUp","javascript:SettingCollection1MouseLeftButtonUp");
        collection1.removeEventListener("MouseEnter","javascript:SettingCollection1MouseEnter");
        collection1.removeEventListener("MouseLeave","javascript:SettingCollection1MouseLeave");
    }catch(e){}
    try{
        collection2.removeEventListener("MouseLeftButtonUp","javascript:SettingCollection2MouseLeftButtonUp");
        collection2.removeEventListener("MouseEnter","javascript:SettingCollection2MouseEnter");
        collection2.removeEventListener("MouseLeave","javascript:SettingCollection2MouseLeave");
    }catch(e){}
    
    if( _currentCollectionIndex != 0 )
    {
        collection1.addEventListener("MouseLeftButtonUp","javascript:SettingCollection1MouseLeftButtonUp");
        collection1.addEventListener("MouseEnter","javascript:SettingCollection1MouseEnter");
        collection1.addEventListener("MouseLeave","javascript:SettingCollection1MouseLeave");
        pageHost.findName("settingCollection1MouseLeaveStoryBoard").begin();
    }
    else
        pageHost.findName("settingCollection1MouseEnterStoryBoard").begin();
        
    
    if( _currentCollectionIndex != 1 )
    {
        collection2.addEventListener("MouseLeftButtonUp","javascript:SettingCollection2MouseLeftButtonUp");
        collection2.addEventListener("MouseEnter","javascript:SettingCollection2MouseEnter");
        collection2.addEventListener("MouseLeave","javascript:SettingCollection2MouseLeave");
        pageHost.findName("settingCollection2MouseLeaveStoryBoard").begin();
    }
    else
        pageHost.findName("settingCollection2MouseEnterStoryBoard").begin();
    
    if( isStartUp )
    {
        //set the actions buttons
        AddButtonMouseEvents(pageHost.findName("Reset"));
        AddButtonMouseEvents(pageHost.findName("PostMyScores"));
        pageHost.findName("Reset").removeEventListener("MouseLeftButtonUp","javascript:handleMouseUp");
        pageHost.findName("PostMyScores").removeEventListener("MouseLeftButtonUp","javascript:handleMouseUp");
        pageHost.findName("Reset").addEventListener("MouseLeftButtonUp","javascript:ResetMouseLeftButtonUp");
        pageHost.findName("PostMyScores").addEventListener("MouseLeftButtonUp","javascript:PostScoresLeftMouseButtonUp");
    }
}

/*********** Supporting Functions ***********/
[].indexOf || (Array.prototype.indexOf = function(v){
       for(var i = this.length; i-- && this[i] !== v;);
       return i;
});

function getRandomInt(x){
    return Math.floor(x * Math.random());
}

function resize() {
   var sourceWidth = shell.width;
   var targetWidth = pageHost.actualWidth;
   var sourceHeight = shell.height;
   var targetHeight = pageHost.actualHeight;
   
   var scale = 0;
   if (sourceHeight > 0 && sourceWidth > 0)
       scale = Math.min(targetHeight / sourceHeight, targetWidth / sourceWidth);
   
   var scaleTransform = pageHost.findName("pageScaleTransform");
   scaleTransform.scaleX = scale;
   scaleTransform.scaleY = scale;
   
   var shellActualWidth = shell.width * scale;
   pageHost.findName('container')['Canvas.Left'] = (pageHost.actualWidth - shellActualWidth )/3;
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}
