var _itemDetails = null;
var _mediaRadioIDs = new Array();
var _qtyBackup = "1";
var _itemType = {
None: -1,
FullAlbum: 0,
Audio: 1,
GenericMerchandise: 2,
SizedMerchandise: 3
};
function _buyNow(itemID, itemType, culture) {
_clearStatus();
$find(_buyNowID).show();
ItemDetailsService.GetData(itemID, itemType, culture, onItemDetailsLoaded, onItemDetailsLoadFailed, null);
}
function _clearStatus() {
$get(_buyNowItemIDHiddenFieldID).value = "";
$get(_buyNowLoaderImageID).style.display = "";
$get(_buyNowPanelID).style.visibility = "hidden";
if (_itemDetails != null) {
var QtyText = $get(String.format("QtyText_{0}", _itemDetails.ID));
if (QtyText != null) {
$removeHandler(QtyText, "change", _QtyChanged);
}
var DownloadFullAlbum = $get(String.format("DownloadFullAlbum_{0}", _itemDetails.ID));
var DownloadTracks = $get(String.format("DownloadTracks_{0}", _itemDetails.ID));
if (DownloadFullAlbum != null && DownloadTracks != null) {
$removeHandler(DownloadFullAlbum, "click", _downloadTypeChange);
$removeHandler(DownloadTracks, "click", _downloadTypeChange);
}
var FullAlbumPrice = $get(String.format("Price_{0}", _itemDetails.ID));
if (FullAlbumPrice != null) {
$clearHandlers(FullAlbumPrice);
}
if (_itemDetails.Tracks != null) {
for (var i = 0; i < _itemDetails.Tracks.length; i++) {
var TrackCheck = $get(String.format("TrackCheck_{0}_{1}", _itemDetails.ID, _itemDetails.Tracks[i].ID));
var TrackPrice = $get(String.format("Price_{0}_{1}", _itemDetails.ID, _itemDetails.Tracks[i].ID));
if (TrackCheck != null) {
$clearHandlers(TrackCheck);
$clearHandlers(TrackPrice);
}
}
}
}
for (var i = 0; i < _mediaRadioIDs.length; i++) {
$removeHandler($get(_mediaRadioIDs[i]), "click", _mediaRadioClick);
}
Array.clear(_mediaRadioIDs);
_itemDetails = null;
_qtyBackup = "1";
$get(_buyNowPanelID).innerHTML = "";
$get(_buyNowAddToCartButtonID).style.visibility = "hidden";
}
function onItemDetailsLoaded(result, context, methodName) {
_itemDetails = result;
$get(_buyNowItemIDHiddenFieldID).value = String.format("{0}|{1}", _itemDetails.ID, _itemDetails.Type);
switch (_itemDetails.Type) {
case _itemType.GenericMerchandise:
_marchandiseItemLoaded();
break;
case _itemType.SizedMerchandise:
_marchandiseItemLoaded();
break;
default:
_albumDataLoaded();
break;
}
$get(_buyNowLoaderImageID).style.display = "none";
$get(_buyNowPanelID).style.visibility = "visible";
}
function _marchandiseItemLoaded() {
var stringHTML = "<br/><table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>";
stringHTML += "<table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>&nbsp;</td>";
stringHTML += "<td class='MediaDataHeaderTitle'>";
stringHTML += _buyNowDescriptionHeaderText;
stringHTML += "</td>";
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowCartPriceHeaderText;
stringHTML += "</td>";
if (_itemDetails.Type == _itemType.SizedMerchandise && _itemDetails.Sizes.length > 0) {
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowSizeHeaderText;
stringHTML += "</td>";
}
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowCartQuantityHeaderText;
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td class='MediaDataCover'>";
stringHTML += String.format("<img src='{0}' alt='{1} - {2}' style='border-width:0px;' />", _itemDetails.PreviewImageUrl, _itemDetails.Name, _itemDetails.Description);
stringHTML += "</td>";
stringHTML += "<td class='MediaDataTitle'>";
stringHTML += String.format("<b>{0}</b><br/>{1}", _itemDetails.Name, _itemDetails.Description);
stringHTML += "</td>";
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("{0}", _itemDetails.FormattedPrice);
stringHTML += "</td>";
if (_itemDetails.Type == _itemType.SizedMerchandise && _itemDetails.Sizes.length > 0) {
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("<select id='Size_{0}' name='Size_{0}'>", _itemDetails.ID);
for (var i = 0; i < _itemDetails.Sizes.length; i++) {
stringHTML += String.format("<option value=\"{0}\">{1}</option>", _itemDetails.Sizes[i].ID, _itemDetails.Sizes[i].Description);
}
stringHTML += "</select>";
stringHTML += "</td>";
}
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("<input type='text' id='QtyText_{0}' class='Quantity' name='QtyText_{0}' value='1' />", _itemDetails.ID);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td><br/>";
stringHTML += String.format("<a class=\"BuyNow\" href=\"{0}\">{1}</a>", $get(_buyNowAddToCartButtonID).href, $get(_buyNowAddToCartButtonID).innerHTML);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
$get(_buyNowPanelID).innerHTML = stringHTML;
var QtyText = $get(String.format("QtyText_{0}", _itemDetails.ID));
if (QtyText != null) {
$addHandler(QtyText, "change", _QtyChanged);
}
}
function _albumDataLoaded() {
Array.clear(_mediaRadioIDs);
var stringHTML = "";
for (var i = 0; i < _itemDetails.Medias.length; i++) {
var mediaObj = _itemDetails.Medias[i];
var mediaRadioID = String.format("buyNowMedia_{0}", mediaObj.ID);
stringHTML += String.format("<input id='{0}' type='radio' name='buyNowMedia_{1}' value='{2}'/>", mediaRadioID, _itemDetails.ID, i);
stringHTML += String.format("<label for='{0}'>&nbsp;{1}</label>", mediaRadioID, mediaObj.Name);
stringHTML += "&nbsp;&nbsp;";
_mediaRadioIDs.push(mediaRadioID);
}
$get(_buyNowPanelID).innerHTML = String.format("<table border='0' cellpadding='0' cellspacing='0' width='100%'>"+
"<tr><td class='BuyNowQuestion'>{0}</td>" +
"<tr><td>{1}</td></tr>" +
"<tr><td><span id='{2}_Details'></span></td></tr>" +
"</table>",
String.format("{0} {1}?", _buyNowFormatChoiceText, _itemDetails.Name), stringHTML, _buyNowPanelID);
for (var i = 0; i < _mediaRadioIDs.length; i++) {
$addHandler($get(_mediaRadioIDs[i]), "click", _mediaRadioClick);
}
}
function onItemDetailsLoadFailed(error, context, methodName) {
alert(error.get_message());
$find(_buyNowID).hide();
}
function _mediaRadioClick(evt) {
var selectedMedia = _itemDetails.Medias[parseInt(evt.target.value)];
var stringHTML = "";
if (!selectedMedia.IsDownload) {
stringHTML = _mediaHTML(selectedMedia);
} else {
stringHTML = _downloadHTML();
}
$get(String.format("{0}_Details", _buyNowPanelID)).innerHTML = stringHTML;
var QtyText = $get(String.format("QtyText_{0}", _itemDetails.ID));
if (QtyText != null) {
$addHandler(QtyText, "change", _QtyChanged);
}
var DownloadFullAlbum = $get(String.format("DownloadFullAlbum_{0}", _itemDetails.ID));
var DownloadTracks = $get(String.format("DownloadTracks_{0}", _itemDetails.ID));
if (DownloadFullAlbum != null && DownloadTracks != null) {
$addHandler(DownloadFullAlbum, "click", _downloadTypeChange);
$addHandler(DownloadTracks, "click", _downloadTypeChange);
}
}
function _QtyChanged(evt) {
var sQty = evt.target.value;
if (isNaN(sQty)) {
sQty = _qtyBackup;
}
_qtyBackup = sQty;
evt.target.value = sQty;
}
function _downloadHTML() {
var stringHTML = "<table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>";
stringHTML += String.format("<input id='DownloadFullAlbum_{0}' type='radio' name='buyNowDownloadType_{0}' value='0'/>", _itemDetails.ID);
stringHTML += String.format("<label for='DownloadFullAlbum_{0}'>&nbsp;{1}</label>", _itemDetails.ID, _buyNowCartFullAlbumText);
stringHTML += "&nbsp;&nbsp;";
stringHTML += String.format("<input id='DownloadTracks_{0}' type='radio' name='buyNowDownloadType_{0}' value='1'/>", _itemDetails.ID);
stringHTML += String.format("<label for='DownloadTracks_{0}'>&nbsp;{1}</label>", _itemDetails.ID, _buyNowCartSingleTracksText);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td>&nbsp;</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td>";
stringHTML += String.format("<div id=\"DownloadDetails_{0}\"></div>", _itemDetails.ID);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
return stringHTML;
}
function _downloadTypeChange(evt) {
var FullAlbumPrice = $get(String.format("Price_{0}", _itemDetails.ID));
if (FullAlbumPrice != null) {
$clearHandlers(FullAlbumPrice);
}
for (var i = 0; i < _itemDetails.Tracks.length; i++) {
var TrackCheck = $get(String.format("TrackCheck_{0}_{1}", _itemDetails.ID, _itemDetails.Tracks[i].ID));
var TrackPrice = $get(String.format("Price_{0}_{1}", _itemDetails.ID, _itemDetails.Tracks[i].ID));
if (TrackCheck != null) {
$clearHandlers(TrackCheck);
$clearHandlers(TrackPrice);
}
}
var downloadFull = (evt.target.value == "0");
$get(String.format("DownloadDetails_{0}", _itemDetails.ID)).innerHTML = _downloadDetailsHTML(downloadFull);
if (downloadFull) {
FullAlbumPrice = $get(String.format("Price_{0}", _itemDetails.ID));
if (FullAlbumPrice != null) {
$addHandler(FullAlbumPrice, "change", _checkPrice);
}
} else {
for (var i = 0; i < _itemDetails.Tracks.length; i++) {
var trackID = _itemDetails.Tracks[i].ID;
var TrackCheck = $get(String.format("TrackCheck_{0}_{1}", _itemDetails.ID, trackID));
var TrackPrice = $get(String.format("Price_{0}_{1}", _itemDetails.ID, trackID));
if (TrackCheck != null && TrackPrice != null) {
$addHandler(TrackCheck, "click", _trackCheckClick);
$addHandler(TrackPrice, "change", _checkPrice);
}
}
}
}
function _downloadDetailsHTML(downloadFull) {
var stringHTML = _buyNowCartHelpText;
stringHTML += "<br/><br/>";
stringHTML += "<table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>";
if (downloadFull) {
stringHTML += "<table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>&nbsp;</td>";
stringHTML += "<td class='MediaDataHeaderTitle'>";
stringHTML += _buyNowCartTitleHeaderText;
stringHTML += "</td>";
stringHTML += "<td class='DownloadDataMinPriceHeader'>";
stringHTML += _buyNowMinPriceText;
stringHTML += "</td>";
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowCartPriceHeaderText;
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td class='MediaDataCover'>";
stringHTML += String.format("<img src='{0}' alt='{1} - {2}' class='AlbumCover' />", _itemDetails.CoverImageUrl, _itemDetails.ArtistName, _itemDetails.Name);
stringHTML += "</td>";
stringHTML += "<td class='MediaDataTitle'>";
stringHTML += String.format("{0}<br/>{1}", _itemDetails.ArtistName, _itemDetails.Name);
stringHTML += "</td>";
stringHTML += "<td class='DownloadDataMinPrice'>";
stringHTML += _itemDetails.Medias[0].FormattedPrice;
stringHTML += "</td>";
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("<input type='text' class='MinPrice' id='Price_{0}' name='Price_{0}' value='{1}' minPrice='{2}' minFormattedPrice='{1}' parentCheckID='' />", _itemDetails.ID, _itemDetails.Medias[0].FormattedPrice.replace("&euro;", "").trim(), _itemDetails.Medias[0].Price);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
} else {
stringHTML += "<div class='buyNowSingleTracks'>";
stringHTML += "<table cellpadding='0' cellspacing='0' style='border-width:0px;' class='buyNowSingleTracks'>";
stringHTML += "<tr>";
stringHTML += "<td>&nbsp;</td>";
stringHTML += "<td class='MediaDataHeaderTitle'>";
stringHTML += _buyNowCartTitleHeaderText;
stringHTML += "</td>";
stringHTML += "<td class='DownloadDataMinPriceHeader'>";
stringHTML += _buyNowMinPriceText;
stringHTML += "</td>";
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowCartPriceHeaderText;
stringHTML += "</td>";
stringHTML += "</tr>";
for (var i = 0; i < _itemDetails.Tracks.length; i++) {
stringHTML += "<tr>";
stringHTML += "<td class='TrackCheck MediaData'>";
stringHTML += String.format("<input type='checkbox' id='TrackCheck_{0}_{1}' name='TrackCheck_{0}_{1}' trackID='{1}' />", _itemDetails.ID, _itemDetails.Tracks[i].ID);
stringHTML += "</td>";
stringHTML += "<td class='MediaDataTitle'>";
stringHTML += String.format("<label for='TrackCheck_{0}_{1}'>&nbsp;{2}</label>", _itemDetails.ID, _itemDetails.Tracks[i].ID, _itemDetails.Tracks[i].Title);
stringHTML += "</td>";
stringHTML += "<td class='DownloadDataMinPrice'>";
stringHTML += _itemDetails.Tracks[i].FormattedPrice;
stringHTML += "</td>";
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("<input type='text' class='MinPrice' id='Price_{0}_{1}' name='Price_{0}_{1}' value='' minPrice='{2}' minFormattedPrice='{3}' parentCheckID='TrackCheck_{0}_{1}' />", _itemDetails.ID, _itemDetails.Tracks[i].ID, _itemDetails.Tracks[i].Price, _itemDetails.Tracks[i].FormattedPrice.replace("&euro;", "").trim());
stringHTML += "</td>";
stringHTML += "</tr>";
}
stringHTML += "</table>";
stringHTML += "</div>";
}
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td><br/>";
stringHTML += String.format("<a class=\"BuyNow\" href=\"{0}\">{1}</a>", $get(_buyNowAddToCartButtonID).href, $get(_buyNowAddToCartButtonID).innerHTML);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
return stringHTML;
}
function _mediaHTML(selectedMedia) {
var stringHTML = "<table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>";
stringHTML += "<table cellpadding='0' cellspacing='0' style='border-width:0px;' width='100%'>";
stringHTML += "<tr>";
stringHTML += "<td>&nbsp;</td>";
stringHTML += "<td class='MediaDataHeaderTitle'>";
stringHTML += _buyNowCartTitleHeaderText;
stringHTML += "</td>";
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowCartPriceHeaderText;
stringHTML += "</td>";
stringHTML += "<td class='MediaDataHeader'>";
stringHTML += _buyNowCartQuantityHeaderText;
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td class='MediaDataCover'>";
stringHTML += String.format("<img src='{0}' alt='{1} - {2}' class='AlbumCover' />", _itemDetails.CoverImageUrl, _itemDetails.ArtistName, _itemDetails.Name);
stringHTML += "</td>";
stringHTML += "<td class='MediaDataTitle'>";
stringHTML += String.format("{0}<br/>{1}", _itemDetails.ArtistName, _itemDetails.Name);
stringHTML += "</td>";
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("{0}", selectedMedia.FormattedPrice);
stringHTML += "</td>";
stringHTML += "<td class='MediaData'>";
stringHTML += String.format("<input type='text' id='QtyText_{0}' class='Quantity' name='QtyText_{0}' value='1' />", _itemDetails.ID);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "<tr>";
stringHTML += "<td><br/>";
stringHTML += String.format("<a class=\"BuyNow\" href=\"{0}\">{1}</a>", $get(_buyNowAddToCartButtonID).href, $get(_buyNowAddToCartButtonID).innerHTML);
stringHTML += "</td>";
stringHTML += "</tr>";
stringHTML += "</table>";
return stringHTML;
}
function _checkPrice(evt) {
var minPrice = parseFloat(evt.target.getAttribute("minPrice"));
var minFormattedPrice = evt.target.getAttribute("minFormattedPrice");
var sValue = evt.target.value.trim();
var floatValue = parseFloat(evt.target.value.replace(",", "."));
if (isNaN(floatValue) || floatValue < minPrice) {
sValue = minFormattedPrice;
}
evt.target.value = sValue;
if (evt.target.getAttribute("parentCheckID") != "") {
var parentCheck = $get(evt.target.getAttribute("parentCheckID"));
if (parentCheck != null) {
parentCheck.checked = (sValue.trim() != "");
}
}
}
function _trackCheckClick(evt) {
var TrackID = evt.target.getAttribute("trackID");
var priceTextbox = $get(String.format("Price_{0}_{1}", _itemDetails.ID, TrackID));
if (priceTextbox != null) {
priceTextbox.value = (evt.target.checked) ? priceTextbox.getAttribute("minFormattedPrice") : "";
}
}
// 07/09/2010 23.57.56