//used to force the page to reload
var refreshButton;

//AJAXCall must be defined either inline or in another file

function showAddWiiNumber(rel)
{
    /// <summary>Shows the Add Wii Number box.</summary>
    /// <param name="rel">element: The box will show relative to this element's position.</param>
    
	cancelAddNumber();
	show("addWiiNumber",rel,false,true);
	setFocus("txtWiiNumber");
}

function showAddFriendCode(rel, id, btn)
{
    /// <summary>Shows the Add Friend Code box.</summary>
    /// <param name="rel">element: The box will show relative to this element's position.</param>
    /// <param name="id">int: The gameID to add this code to.</param>
    /// <param name="btn">string (optional): The btn.ClientID that will force the page to reload</param>
    
    if( btn )
    {
        refreshButton = btn;
    }
    else
    {
        refreshButton = "";
    }
    
	cancelAddNumber();
	show("addFriendCode",rel,false,true);
	document.getElementById("txtGameID").value = id;
	setFocus("txtNickName");
}

function showDeleteNumber(rel, isWii, id, gameID)
{
    /// <summary>Shows the Delete Number box.</summary>
    /// <param name="rel">element: The box will show relative to this element's position.</param>
    /// <param name="isWii">bool: If isWii then it will delete from the wii numbers table, otherwise the friend code table.</param>
    /// <param name="id">int: The id of the number to delete.</param>
    /// <param name="gameID">int: The gameID of the number to delete if friend code.</param>
    
	cancelAddNumber();
	show("deleteNumber",rel,false,false);
	document.getElementById("deleteNumber").style.left = getX(rel) + "px";
	
	document.getElementById("txtDeleteNumberID").value = id;
	
	if( isWii )
	{
	    document.getElementById("txtDeleteIsWii").value = "1";
	}
	else
	{
	    document.getElementById("txtDeleteIsWii").value = "0";
	}	
	if( gameID )
	{
	    document.getElementById("txtDeleteGameID").value = gameID;
	}
	else
	{
	    document.getElementById("txtDeleteGameID").value = "0";
	}
	rel.blur();
}

function showAddGameComment(rel, id, btn)
{
    /// <summary>Shows the Add Game Comment box.</summary>
    /// <param name="rel">element: The box will show relative to this element's position.</param>
    /// <param name="id">int: The id of the game to comment on.</param>
    /// <param name="btn">string (optional): The btn.ClientID that will force the page to reload</param>
    
    if( btn )
    {
        refreshButton = btn;
    }
    else
    {
        refreshButton = "";
    }
    
	cancelAddNumber();
	document.getElementById("txtGameCommentID").value = id;
	show("addGameComment",rel,false,true);
	setFocus("txtGameComment");
}

function showRatingBox(rel, id, rating, btn)
{
    /// <summary>Shows the Game Rating box.</summary>
    /// <param name="rel">element: The box will show relative to this element's position.</param>
    /// <param name="id">int: The id of the game to rate.</param>
    /// <param name="rating">int: The initial rating so the stars will be updated.</param>
    /// <param name="btn">string (optional): The btn.ClientID that will force the page to reload</param>
    
    if( btn )
    {
        refreshButton = btn;
    }
    else
    {
        refreshButton = "";
    }
    
    cancelAddNumber();
    setRater(rating);
	document.getElementById("txtRateGameID").value = id;
	show("ratingBox",rel,false,true);
	rel.blur();
}

function cancelAddNumber()
{
    /// <summary>Closes the Add Wii Number box, the Add Friend Code box, and the Delete Number box.</summary>
    
    try
    {
        document.getElementById("txtWiiNumber").value = "";
        document.getElementById("wiiNumberError").innerHTML = "";
    }
    catch(e) {}
    
	document.getElementById("txtNickName").value = "";
	document.getElementById("txtFriendCode").value = "";
	document.getElementById("txtGameID").value = "";
	document.getElementById("friendCodeError").innerHTML = "";
	
	try
    {
	    document.getElementById("txtDeleteNumberID").value = "";
	    document.getElementById("txtDeleteIsWii").value = "";
	    document.getElementById("txtDeleteGameID").value = "";
	    document.getElementById("deleteNumberError").innerHTML = "";
	}
	catch(e) {}
	
	document.getElementById("txtGameComment").value = "";
	document.getElementById("txtGameCommentID").value = "";
	document.getElementById("lblGameComment").innerHTML = "";
	
	document.getElementById("txtRateGameID").value = "";
	document.getElementById("lblRateGameComment").innerHTML = "";
	
	hide("addFriendCode");
	hide("addWiiNumber");
	hide("deleteNumber");
	hide("addGameComment");
	hide("ratingBox");
}

// Global variable holding the holder div of either the wii or the game.
// This div is the one that gets reloaded from the AJAX call.
var numberDiv;
var numberDone = function(txt)
{
    /// <summary>Callback from AJAX. Will show the error if any, or print the results to numberDiv</summary>
    /// <param name="text">string: Text returned from AJAX.</param>
    
    cancelAddNumber();
	    
	if( txt.indexOf("Error:") >= 0 )
	{
		txt = txt.replace(/<!--/gi,"").replace(/-->/gi,"\n");
		alert(txt);
	}
	else
	{
		numberDiv.innerHTML = txt;
	}
}

function addWiiNumber()
{
    /// <summary>AJAX to add number if valid.</summary>
    
    numberDiv = document.getElementById("holder_wii");
    var num = document.getElementById("txtWiiNumber").value;
    var rel = document.getElementById("wiiNumberError");
    
    if( num.length != 16 )
	{
		rel.innerHTML = "Error: Invalid number.";
		setFocus("txtWiiNumber");
		return;	
	}
	
    var url = "/ajax/wiiNumbers.aspx?action=0&num=" + escape(num);
    rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>adding...</span>";
	AJAXCall(url,numberDone);
	rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>adding...</span>";
}

function addFriendCode()
{
    /// <summary>AJAX to add number if valid.</summary>
    
    var gameID = document.getElementById("txtGameID").value;
    var num = document.getElementById("txtFriendCode").value;
    var nickname = document.getElementById("txtNickName").value;
    var rel = document.getElementById("friendCodeError");
    
    if( num.length != 12 )
	{
		rel.innerHTML = "Error: Invalid number.";
		setFocus("txtFriendCode");
		return;	
	}
	
    var url = "/ajax/wiiNumbers.aspx?action=2&game=" + gameID + "&num=" + escape(num) + "&nickname=" + escape(nickname);
    rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>adding...</span>";
	
	if( refreshButton != "" )
    {
        var tmp = function(txt)
        {
            if( txt.indexOf("Error:") >= 0 )
	        {
		        txt = txt.replace(/<!--/gi,"").replace(/-->/gi,"\n");
		        alert(txt);
	        }
	        else
	        {
	            //this will reload the panel
	            document.getElementById(refreshButton).click();
            }
        };
        
        AJAXCall(url,tmp);
    }
    else
    {
	    numberDiv = document.getElementById("holder_" + gameID);
	    AJAXCall(url,numberDone);
	}
	rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>adding...</span>";
}

function deleteNumber()
{
    /// <summary>AJAX to delete the number. Parameters are grabbed from the hidden form elements</summary>

    var url = "";
    if( document.getElementById("txtDeleteIsWii").value == "1" )
    {
        numberDiv = document.getElementById("holder_wii");
        url = "/ajax/wiiNumbers.aspx?action=1&id=" + document.getElementById("txtDeleteNumberID").value;
    }
    else
    {
        numberDiv = document.getElementById("holder_" + document.getElementById("txtDeleteGameID").value);
        url = "/ajax/wiiNumbers.aspx?action=3&id=" + document.getElementById("txtDeleteNumberID").value + "&game=" + document.getElementById("txtDeleteGameID").value;
    }

    var rel = document.getElementById("deleteNumberError");
    rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>deleting...</span>";
	AJAXCall(url,numberDone);
	rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>deleting...</span>";
}

function addGameComment()
{
    var gameID = document.getElementById("txtGameCommentID").value;
    var rel = document.getElementById("lblGameComment");
    var url = "/ajax/wiiNumbers.aspx?action=9&game=" + gameID + "&msg=" + escape(document.getElementById("txtGameComment").value);
    rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>adding...</span>";
	if( refreshButton != "" )
    {
        var tmp = function(txt)
        {
            if( txt.indexOf("Error:") >= 0 )
	        {
		        txt = txt.replace(/<!--/gi,"").replace(/-->/gi,"\n");
		        alert(txt);
	        }
	        else
	        {
	            //this will reload the panel
	            document.getElementById(refreshButton).click();
            }
        };
        
        AJAXCall(url,tmp);
    }
    else
    {
	    numberDiv = document.getElementById("holder_" + gameID);
	    AJAXCall(url,numberDone);
	}
	rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>adding...</span>";
}

var lastSearch;
function searchGames(str)
{
    if( str == lastSearch )
    {
        return;
    }
    lastSearch = str;
    numberDiv = document.getElementById("wiiNumbers");
    
    var url = "/ajax/wiiNumbers.aspx?action=10&src=" + escape(str);
    numberDiv.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top; border:none;' /> <span class='small'>searching...</span>";
	AJAXCall(url,numberDone);
	numberDiv.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top; border:none;' /> <span class='small'>searching...</span>";
}

//Rater Code
var initialRating = 0;

function setRater(num)
{
    initialRating = num;
    fillStars(num);
}
    
function fillStars(num)
{
    for( var i = 1; i <= 5; i++ )
    {
        if( i <= num )
        {
            document.getElementById("raterStar" + i).src = "/images/FilledStar.png";
        }
        else
        {
            document.getElementById("raterStar" + i).src = "/images/EmptyStar.png";
        }
        document.getElementById("raterStar" + i).style.cursor = "pointer";
    }
    document.getElementById("raterStar0").style.cursor = "pointer";
}

function rateOver(elem)
{
    var num = elem.id.replace("raterStar","");
    fillStars(parseInt(num));
}

function rateOut()
{
    fillStars(initialRating);
}

function rateClick(elem)
{
    var num = elem.id.replace("raterStar","");
    setRater(num);
    
    var gameID = document.getElementById("txtRateGameID").value;
    var rel = document.getElementById("lblRateGameComment");
    var url = "/ajax/wiiNumbers.aspx?action=13&game=" + gameID + "&rating=" + num;
    rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>saving...</span>";
    if( refreshButton != "" )
    {
        var tmp = function(txt)
        {
            if( txt.indexOf("Error:") >= 0 )
	        {
		        txt = txt.replace(/<!--/gi,"").replace(/-->/gi,"\n");
		        alert(txt);
	        }
	        else
	        {
	            //this will reload the panel
	            //__doPostBack(refreshButton,'');
	            document.getElementById(refreshButton).click();
	            //window.location.reload();
            }
        };
        
        AJAXCall(url,tmp);
    }
    else
    {
        numberDiv = document.getElementById("holder_" + gameID);
	    AJAXCall(url,numberDone);
	}
	rel.innerHTML = "<img src='/images/loader.gif' alt='' style='vertical-align:text-top;' /> <span class='small'>saving...</span>";
}