var MarketplaceFlyoutSettings = new Array();

function initMarketplaceFlyoutSettings()
{
MarketplaceFlyoutSettings["tv"] = new Array();
MarketplaceFlyoutSettings["musicvideo"] = new Array();
MarketplaceFlyoutSettings["morevideo"] = new Array();
MarketplaceFlyoutSettings["movie"] = new Array();
MarketplaceFlyoutSettings["game"] = new Array();
MarketplaceFlyoutSettings["tv"]["right"] = new Object();
MarketplaceFlyoutSettings["tv"]["left"] = new Object();
MarketplaceFlyoutSettings["musicvideo"]["right"] = new Object();
MarketplaceFlyoutSettings["musicvideo"]["left"] = new Object();
MarketplaceFlyoutSettings["morevideo"]["right"] = new Object();
MarketplaceFlyoutSettings["morevideo"]["left"] = new Object();
MarketplaceFlyoutSettings["movie"]["right"] = new Object();
MarketplaceFlyoutSettings["movie"]["left"] = new Object();
MarketplaceFlyoutSettings["game"]["right"] = new Object();
MarketplaceFlyoutSettings["game"]["left"] = new Object();

MarketplaceFlyoutSettings["tv"]["left"].cssLeft = 207;
MarketplaceFlyoutSettings["tv"]["left"].cssTop = 21;
MarketplaceFlyoutSettings["tv"]["right"].cssLeft = 26;
MarketplaceFlyoutSettings["tv"]["right"].cssTop = 21;
MarketplaceFlyoutSettings["musicvideo"]["left"].cssLeft = 207;
MarketplaceFlyoutSettings["musicvideo"]["left"].cssTop = 21;
MarketplaceFlyoutSettings["musicvideo"]["right"].cssLeft = 26;
MarketplaceFlyoutSettings["musicvideo"]["right"].cssTop = 21;
MarketplaceFlyoutSettings["morevideo"]["left"].cssLeft = 214;
MarketplaceFlyoutSettings["morevideo"]["left"].cssTop = 21;
MarketplaceFlyoutSettings["morevideo"]["right"].cssLeft = 33;
MarketplaceFlyoutSettings["morevideo"]["right"].cssTop = 20;
MarketplaceFlyoutSettings["movie"]["left"].cssLeft = 212;
MarketplaceFlyoutSettings["movie"]["left"].cssTop = 21;
MarketplaceFlyoutSettings["movie"]["right"].cssLeft = 31;
MarketplaceFlyoutSettings["movie"]["right"].cssTop = 21;
MarketplaceFlyoutSettings["game"]["left"].cssLeft = 214;
MarketplaceFlyoutSettings["game"]["left"].cssTop = 20;
MarketplaceFlyoutSettings["game"]["right"].cssLeft = 33;
MarketplaceFlyoutSettings["game"]["right"].cssTop = 20;
}
initMarketplaceFlyoutSettings();


function showMarketplaceFlyout(evt, oImage, metadataDivId, sFlyoutDirection, sFlyoutType)
{
if(window.event)
{
evt = window.event;
}

var oMetadataDiv = document.getElementById(metadataDivId);
if (oMetadataDiv == null)
return;


var func = function()
{
showDelayedMarketplaceFlyout(metadataDivId, sFlyoutDirection);
}
var iTimeout = window.setTimeout(func, 300);

oImage.onmouseout = function()
{
window.clearTimeout(iTimeout);
}


var oDiv = ensureFlyoutDivExists(sFlyoutDirection);

if (document.all)
{
eventPosition(evt, oDiv, sFlyoutDirection, sFlyoutType);
}
else
{
addativePosition(oImage, oDiv, sFlyoutDirection, sFlyoutType, 0, 0);
}
}


function showDelayedMarketplaceFlyout(metadataDivId, sFlyoutDirection)
{
var oMetadataDiv = document.getElementById(metadataDivId);
if (oMetadataDiv == null)
return;

var oDiv = ensureFlyoutDivExists(sFlyoutDirection);

oDiv.innerHTML = oMetadataDiv.innerHTML;


oDiv.style.display = "block";

}

function eventPosition(evt, oDiv, sFlyoutDirection, sFlyoutType)
{
var sL = 0;
var sT = 0;
if (document.documentElement)
{
sL = document.documentElement.scrollLeft;
sT = document.documentElement.scrollTop;
}
else
{
sL = document.body.scrollLeft;
sT = document.body.scrollTop;
}

var iX = evt.clientX + sL - evt.offsetX - 2;
var iY = evt.clientY + sT - evt.offsetY - 2;

oDiv.style.top = (iY - MarketplaceFlyoutSettings[sFlyoutType][sFlyoutDirection].cssTop) + "px";
oDiv.style.left = (iX - MarketplaceFlyoutSettings[sFlyoutType][sFlyoutDirection].cssLeft) + "px";

}

function addativePosition(oTarget, oDiv, sFlyoutDirection, sFlyoutType, iCurTop, iCurLeft)
{
if (oTarget != document.body)
{
if (oTarget.tagName != "TR")
{
iCurTop += oTarget.offsetTop;
iCurLeft += oTarget.offsetLeft;
}
oTarget = oTarget.offsetParent;
addativePosition(oTarget, oDiv, sFlyoutDirection, sFlyoutType, iCurTop, iCurLeft);
}
else
{
oDiv.style.top = (iCurTop - MarketplaceFlyoutSettings[sFlyoutType][sFlyoutDirection].cssTop) + "px";
oDiv.style.left = (iCurLeft - MarketplaceFlyoutSettings[sFlyoutType][sFlyoutDirection].cssLeft) + "px";
}
}

function ensureFlyoutDivExists(sFlyoutDirection)
{
var oDiv = document.getElementById("XbcMktCatalogFlyoutDiv");
if (oDiv == null)
{
oDiv = document.createElement("div");
oDiv.id = "XbcMktCatalogFlyoutDiv";
oDiv.style.visibility = "visible";
document.body.appendChild(oDiv);
}
if (sFlyoutDirection == "left")
{
oDiv.className = "XbcMktCatalogFlyout XbcMktCatalogFlyoutLeft";
}
else if (sFlyoutDirection == "right")
{
oDiv.className = "XbcMktCatalogFlyout XbcMktCatalogFlyoutRight";
}
else
{
oDiv.className = "XbcMktCatalogFlyout";
}
oDiv.style.display = "none";
return oDiv;
}

function closeMarketplaceFlyout()
{
var oDiv = ensureFlyoutDivExists("");
oDiv.style.display = "none";

oDiv.innerHTML = "";
}

function selectCreditCard(newBodyId, oldBodyIdFieldName, selectedIdFieldName, selectedId, selectedStyle, unselectedStyle, radioButtonId)
{
var newBody = document.getElementById(newBodyId);
var oldBodyIdField = document.getElementById(oldBodyIdFieldName);
var oldBody;
if (oldBodyIdField.value != "")
oldBody = document.getElementById(oldBodyIdField.value);
if (newBody != oldBody)
{
var selectedIdField = document.getElementById(selectedIdFieldName);
var radioButton = document.getElementById(radioButtonId);

radioButton.checked = true;
selectedIdField.value = selectedId;
newBody.className = selectedStyle;
if (oldBody != null)
oldBody.className = unselectedStyle;
oldBodyIdField.value = newBodyId;
}
}

function showCardList(expiredCardsDivId, toggleLinkId, nonExpiredCardsText, allCardsText)
{
var expiredCardsTable = document.getElementById(expiredCardsDivId);
var toggleLink = document.getElementById(toggleLinkId);

var hasInnerText = (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;

if (expiredCardsTable.style.display == "none")
{
expiredCardsTable.style.display = "inline";
if (hasInnerText)
toggleLink.innerText = allCardsText;
else
toggleLink.textContent = allCardsText;
}
else
{
expiredCardsTable.style.display = "none";
if (hasInnerText)
toggleLink.innerText = nonExpiredCardsText;
else
toggleLink.textContent = nonExpiredCardsText;

}
}


function confirmQueueDelete(deleteConfirmUrl, deleteActionUrl, deleteWindowId)
{
var bHasCookie = false;
if (readCookie("SkipDeleteConfirmation") == "true")
{
bHasCookie = true;
}

if (bHasCookie)
{

window.location = deleteActionUrl;
}
else
{
var oArgs = new Object();
oArgs.deleteActionUrl = deleteActionUrl;
var oWnd = radopen(null, deleteWindowId);
oWnd.Argument = oArgs;
oWnd.ClientCallBackFunction = confirmQueueDeleteCallback;
oWnd.SetUrl(deleteConfirmUrl);
}

}

function confirmQueueDeleteCallback(radWindow, returnValue)
{



var command = returnValue[0];
var deleteActionUrl = returnValue[1];

var bDelete = false;
if (command == "cookie")
{
createSessionCookie("SkipDeleteConfirmation", "true");
bDelete = true;
}
else if (command == "delete")
{
bDelete = true;
}
if (bDelete)
{
window.location = deleteActionUrl;
}
}


function createSessionCookie(name,value) {
document.cookie = name+"="+value;
}

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;
}



if (!window.XboxLiveMarketplace)
window.XboxLiveMarketplace = {};

XboxLiveMarketplace.createDelegate = function(instance, method)
{
return function()
{
return method.apply(instance, arguments);
}
}

XboxLiveMarketplace.relatedItemTabPanelPair = function(tabId, panelId, isOpened)
{
this.tab = document.getElementById(tabId);
this.panel = document.getElementById(panelId);
this.isOpened = isOpened;

this.animationSteps = [];
this.animationSteps[0] = 0;
this.animationSteps[1] = 3;
this.animationSteps[2] = 6;
this.animationSteps[3] = 10;
this.animationSteps[4] = 20;
this.animationSteps[5] = 50;
this.animationSteps[6] = 70;
this.animationSteps[7] = 80;
this.animationSteps[8] = 94;
this.animationSteps[9] = 97;
this.animationSteps[10] = 100;

this.maxAnimationStep = this.animationSteps.length - 1;
this.animationStep = isOpened ? this.maxAnimationStep : 0;
}

XboxLiveMarketplace.relatedItemTabPanelPair.prototype =
{
Toggle: function()
{
if (this.isOpened)
{
this.isOpened = false;
}
else
{
this.isOpened = true;
}
window.setTimeout(XboxLiveMarketplace.createDelegate(this, this.AnimateStep), 10);
},
Close: function()
{
if (!this.isOpened)
{

return;
}

this.isOpened = false;
window.setTimeout(XboxLiveMarketplace.createDelegate(this, this.AnimateStep), 10);
},
AnimateStep: function()
{
var iStep = this.animationStep;
var iMultiplier = this.animationSteps[iStep] / 100;

this.panel.style.height = (this.panel.scrollHeight * iMultiplier) + "px";

if (this.isOpened)
iStep++;
else
iStep--;

if ((iStep < 0) || (iStep > this.maxAnimationStep))
{

if (this.isOpened)
{
this.tab.className = "LessDetailsButton";
}
else
{
this.tab.className = "MoreDetailsButton";
}
}
else
{
this.animationStep = iStep;
window.setTimeout(XboxLiveMarketplace.createDelegate(this, this.AnimateStep), 10);
}

}
}


XboxLiveMarketplace.relatedItemTabstripControl = function()
{
this.tabNames = [];
this.tabs = [];
}

XboxLiveMarketplace.relatedItemTabstripControl.prototype =
{
AddTab: function(tabName, tabId, panelId, isOpened)
{
this.tabNames.push(tabName);
this.tabs[tabName] = new XboxLiveMarketplace.relatedItemTabPanelPair(tabId, panelId, isOpened);
},
ClickTab: function(tabName)
{
for (var i = 0; i < this.tabNames.length; i++)
{
var curName = this.tabNames[i];
if (curName != tabName)
{
this.tabs[curName].Close();
}
else
{
this.tabs[curName].Toggle();
}
}
}
}

function ToggleAvatarGearLink(oButton)
{
var oDiv = oButton.nextSibling;
var action = oButton.getAttribute("value");
if (action == "expand")
{
oDiv.style.display = "block";
oButton.setAttribute("value", "contract");
oButton.className = "button buttonContract";
}
else
{
oDiv.style.display = "none";
oButton.setAttribute("value", "expand");
oButton.className = "button buttonExpand";
}
}





function createAlternateViewThumbnails(primaryImageUrl, thumbnailContainerId, fullSizeImageId)
{
var fullSizeImageObject = document.getElementById(fullSizeImageId);
var thumbnailContainerDiv = document.getElementById(thumbnailContainerId);

var thumbnailImage = document.createElement("img");
thumbnailImage.src = primaryImageUrl;
thumbnailImage.className = "MktAlternateViewThumbnail";
thumbnailImage.clickTarget = fullSizeImageObject;
thumbnailImage.onclick = thumbnailClick;
thumbnailContainerDiv.appendChild(thumbnailImage);


var iLastSlash = primaryImageUrl.lastIndexOf("/");
if (iLastSlash > 0)
{
var rootUrl = primaryImageUrl.substring(0, iLastSlash + 1);
createAlternateViewThumbnail(rootUrl, 0, fullSizeImageObject, thumbnailContainerDiv);
}
}

function createAlternateViewThumbnail(rootUrl, alternateViewNumber, fullSizeImageObject, thumbnailContainerDiv)
{
var thumbnailImage = document.createElement("img");
thumbnailImage.className = "MktAlternateViewThumbnail";
thumbnailImage.clickTarget = fullSizeImageObject;
thumbnailImage.onclick = thumbnailClick;
thumbnailImage.onload = function()
{
createAlternateViewThumbnailComplete(thumbnailImage, rootUrl, alternateViewNumber, fullSizeImageObject, thumbnailContainerDiv);
}
thumbnailImage.onerror = function()
{
createAlternateViewThumbnailError(thumbnailImage, alternateViewNumber, thumbnailContainerDiv);
}

thumbnailImage.src = rootUrl + alternateViewNumber;
}


function thumbnailClick(evt)
{
var sourceImage = (window.event) ? event.srcElement : evt.currentTarget;
sourceImage.clickTarget.src = sourceImage.src;
}

function createAlternateViewThumbnailComplete(thumbnailImage, rootUrl, alternateViewNumber, fullSizeImageObject, thumbnailContainerDiv)
{
thumbnailContainerDiv.appendChild(thumbnailImage);

alternateViewNumber++;
if (alternateViewNumber <= 9)
{
createAlternateViewThumbnail(rootUrl, alternateViewNumber, fullSizeImageObject, thumbnailContainerDiv);
}
}
function createAlternateViewThumbnailError(thumbnailImage, alternateViewNumber, thumbnailContainerDiv)
{



if (alternateViewNumber == 0)
{
thumbnailContainerDiv.style.display = "none";
}
}
