﻿
function SendEmail(details) {
    /**
    * Details takes this form:
    * {
    *    FromUserID: ..
    *    ToEmailAddress: ..
    *    ToUserName: ..
    *    EmailType: ..
    *    ScrapbookID: ..
    *    ScrapbookTitle: ..
    * }
    */
    var request = "/EmailHandler.aspx?ajax=true";

    var j = $.ajax({ url: request,
        context: document.body,
        processData: true,
        data: details,
        success:
		function (data, status) {
			
		    swfobject.getObjectById("scrapbookApp").onEmail(status, "");

		}
    }
	);
}

function AddToFacebook(details) {
    /**
    * Details takes this form:
    * {
    *    FromUserID: ..
    *    ScrapbookID: ..
    *    ScrapbookTitle: ..
    * }
    */
    var url = "http://" + window.location.hostname + "/Scrapbook?scrapbookid=" + details.ScrapbookID;
    window.open("http://www.facebook.com/sharer.php?t=" + escape(details.ScrapbookTitle) + "&u=" + escape(url));
}



jQuery.fn.center = function () {
    this.css("position", "absolute");
    this.css("top", ($(window).height() / 2) - this.height() + $(window).scrollTop() + "px");
    this.css("left", ($(window).width() / 2) - this.width() + $(window).scrollLeft() + "px");
    return this;
} 



function scrapbook_addBasket(products) {

    $(".list-tool-tip-wrap").hide();
    $("[id$='appendedOverlay']").remove();

    var request = "/Handler.aspx?command=AddToBasket&ajax=true&pid=${PRODUCT_ID}&vid=${VARIANT}&qty=${QUANTITY}";

    var callTracker = new Object();
    callTracker.count = 0;
    callTracker.responses = new Array();
    callTracker.successful = true;

    /**
    * Make several requests and join the results together
    */
    if(products.length > 0)
    {
        for (var i = 0; i < products.length; i++) {
            var product = products[i];
            var url = request;
            // fix : if variant is undefined, need to set to blank string
            if (product.vid == null) {
                product.vid = "";
            }
            url = url.split("${PRODUCT_ID}").join(product.id);
            url = url.split("${QUANTITY}").join(product.quant);        
            url = url.split("${VARIANT}").join(product.vid);
        
            //alert("URL " + url);
            callTracker.count++;
            var call = $.ajax({ url: url,
                context: document.body,
                processData: true,
                cache: false,
                error: function (request, error) {
                    callTracker.count--;
                    callTracker.successful = false;

                    var popup = $("[id$='tencms-stockerrorOverlay']");
                    popup.fadeIn();
                    // correctly position the overlay
                    popup.center();

                    if (callTracker.count == 0) {
                        //All done!
                        scrapbook_addBasketDone(callTracker, request, error);
                    }
                },
                success:
				    function (data, status) {
				        //Was it added to basket?
				        var obj = eval('(' + data + ')');
				        if (obj.products != null) {
				            for (var q = 0; q < obj.products.length; q++) {

				                var msg = (obj.products[q].addToBasket ? 'Added' : (obj.products[q].reason || 'unknown error'));
				                // display out of stock overlay
				                if (msg == "out of stock") {
				                    var popup = $("[id='tencms-outofstockOverlay']");
				                    popup.fadeIn();
				                    // correctly position the overlay
				                    popup.center();

				                }
				                else if (msg == "insufficient stock") {
				                    var popup = $("[id='tencms-insufficientstockOverlay']");
				                    popup.fadeIn();
				                    // correctly position the overlay
				                    popup.center();
				                }
				                else if (msg != 'Added') {
				                    var popup = $("[id='tencms-stockerrorOverlay']");
				                    popup.fadeIn();
				                    // correctly position the overlay
				                    popup.center();
				                }

				                if (obj.products[q].addToBasket == false) {
				                    callTracker.successful = false;
				                }
				            }
				        }

				        callTracker.responses.push(data);
				        callTracker.count--;

				        if (callTracker.count == 0) {
				            //All done!
				            scrapbook_addBasketDone(callTracker, data, status);
				        }
				    }
            });
        }
    }
    else
    {
        // otherwise simply let the scrapbook module know that nothing is remaining
        scrapbook_callbackModule(true);
    }

}


function scrapbook_addBasketDone(callTracker, data, status) {

    // update the basket, passing in the last response from the handler
    addBasketResponse(data, status);
    scrapbook_callbackModule(callTracker.successful);
      
}

function scrapbook_callbackModule( successful )
{
    //Let flash know its done
    if (swfobject.getObjectById('scrapbookApp') != null) {
        //CHANGE
        swfobject.getObjectById('scrapbookApp').addToBasketComplete(successful);        
    }  
}

// handle the return from web service call for add to basket in handler
function addBasketResponse(data, status) {
    if (status === 'success') {
        var j = eval('(' + data + ')');
        var category_id = '';
        var prod_id = '';

        // see if a product was found to add
        if (j.ProductNotFound != null && j.ProductNotFound != 'undefined' && j.ProductNotFound == "true") {
            // not found - redirect to product detail page...
            if (j.UrlRedirect != null && j.UrlRedirect != 'undefined' && j.UrlRedirect != '') {
                window.location = j.UrlRedirect;
            }
            return;
        }
        // get the cid and vid passed back
        if (typeof j.products != 'undefined' && j.products.length != 0) {
            prod_id = j.products[0].pid;
            category_id = j.products[0].cid;            
            variant_id = j.products[0].vid;
        }

        if (typeof j.products != 'undefined' && j.products.length != 0) {
            msg = (j.products[0].addToBasket ? 'This product has been added to your basket' : (j.products[0].reason || 'unknown error'));
            setTimeout("$('.pop-up').fadeOut('fast');", 5000);

            // added to basket ok - rebuild minibasket and update omniture
            if (j.products[0].addToBasket == true) {
                // show added to basket overlay
                var popup = $("[id='tencms-addtobasketOverlay']");
                popup.fadeIn();
                // correctly position the overlay
                popup.center();
                

                if (j.products[0].minibaskethtml != null && j.products[0].minibaskethtml != 'undefined' && j.products[0].minibaskethtml != '') {
                    $("#mini-basket-main").html(HtmlDecode(j.products[0].minibaskethtml));
                }
                var arrow = $('a.basket-nav-summary-link');
                arrow.attr('title', arrow.attr('tooltipExpand'));
                if (typeof Omniture != 'undefined') {
                    var bcnt = $('#basket-count').val();
                    if (bcnt == "True")
                    { $('#basket-count').val('False'); }
                    if (variant_id != null && variant_id != '') {
                        Omniture.SubmitAddToBasketSingle(prod_id, variant_id, category_id, 1, bcnt);
                    }
                    else {
                        Omniture.SubmitAddToBasketSingle(prod_id, prod_id, category_id, 1, bcnt);
                    }
                }

                // show the checkout link in the summary header
                $('#basket-nav-checkout-li').html($('#hidden-basket-nav-checkout-li').html());
                $('#basket-nav-basket-li').attr('class', '');
                //update the basket summary in header
                var basketTitle = $('.hdnBasketTitleCaption').val();
                // strip out items and total
                var itemsText = "";
                var totalText = "";
                if (j !== null && j.message != null && j.message != '' && j.message != 'undefined') {
                    var splitIndex = j.message.indexOf(",");
                    if (splitIndex > 0) {
                        totalText = j.message.substring(splitIndex + 1);
                        itemsText = j.message.substring(0, splitIndex);
                    }
                    else {
                        itemsText = j.message;
                    }
                }

                $('a#basket-nav-summary').html('<span>' + basketTitle + '</span> ' + itemsText);
                var totalSection = $('[id$="basket-nav-summary2"]');
                if (totalSection != null && totalSection != 'undefined' && totalSection != '' && totalSection.html() != null && totalSection.html() != 'undefined' && totalSection.html() != '') {
                    $('[id$="basket-nav-summary2"]').html(totalText);
                }
                else {
                    $('[id$="basket-nav-summary2"]').html(totalText);
                }
                rebindBasketNavClicks();
            }
        } else if (typeof j.message != 'undefined') {
            msg = j.message;
        }
        $('.pop-up .message').html(msg);
        $('.pop-up').fadeIn('fast');

    }
    return false;  // ensure postback not done
}

function HtmlEncode(text) {
    return $('<div/>').text(text).html();
};

function HtmlDecode(text) {
    return $('<div/>').html(text).text();
};

