(function() {
	DUMAS.checkDL = checkDL;
	DUMAS.upgradeSub = upgradeSub;
	DUMAS.getPlanChoice = getPlanChoice;

	var loadingGraphic = function(hash){ //for the 'processing' graphic for jqmodal window
        hash.w.append("<div id='processing'><h2>Processing...<\/h2><img src='/images/oneclick/processing.gif' alt='processing' /><\/div>");
        hash.w.fadeIn('1000');
    };

    var hide = function(hash) {
        hash.o.remove();
        hash.w.hide();
        $("#upgradeModal").remove();
    }

    function getPlanChoice() {
		return $("#oneclick input[name=selectedPlan]:checked").val();
    }

    //check if downloads are available
    function checkDL(downloadInfo) {
		console.log('checkDL called');
		if (DUMAS.download && DUMAS.download.oneClickEnabled && !downloadInfo.target.hasClass('redownload')) {
				if ($.ajax({type: "POST", async: false, url: "/remote/checkdlm.html",
					data: "m=" + downloadInfo.mediaType + "&u=" + downloadInfo.href + "&r=" + Math.random()}).responseText == "red")
				{
					var url = "/remote/oneclick.html?r=" + Math.random();
					function showDetails() {
						$("#oneclick").submit(function(){
							upgradeSub(getPlanChoice('selectedPlan'));
							return false;
						});
						$("#annualDetails").click(function() {
							$("#termsAndDetails").slideToggle("normal");
							return false;
						});
					}
					var load = showDetails;
					$("body").append("<div id='upgradeModal' class='jqmUpgradeWindow' style='display:none;'><\/div>");
					$("#upgradeModal").jqm({onLoad: load, onShow: loadingGraphic, ajax: url, modal: true, onHide: hide, toTop: 'true'}).jqmShow();
					downloadInfo.e.preventDefault();
					return false;
				} else {
					if($('#myFrame').length) {
						$('#myFrame')[0].contentWindow.location.replace(downloadInfo.href);
						downloadInfo.e.preventDefault();
						 //going to the iframe and returning false screws up the downloadEvents, cause we want this to return true here -- or will preventDefault work?
					}
						return true;
					}
			}
		return true;
	};



	//upgrading the subscription
    function upgradeSub(plan) {
		if (document.getElementById("inlineUpgrade") !== null) {
            //hide or show the correct divs
            $("#oneclick").hide();
            $("#oneClickFooter").hide();
            $("#close").hide();

                $("#loading").show();
        }
        var runMe = 1;
        $.ajax({
            async: false,
            type: "POST",
            url: "/remote/oneclick.html",
            data: "step=upgrade&selectedPlan=" + plan + "&random=" + Math.random(),
            success: function(t) {
            if (runMe == 1) {
                    runMe = 2;
                    var response = t.split(",");
                    $('#inlineUpgrade').css('height','216px');
                    //split response from server, set innerHTML to correct string
                    $('#close').show();
                    if (response[0] == 1) {
                        $('#boosterDownloads').get(0).innerHTML = response[1];
                        $('#upgradeDownloads').get(0).innerHTML = response[1];
                        $('span.musicDownloadCount').get(0).innerHTML = response[3];
                        $('#loading').hide();
                        if (plan === undefined || plan.indexOf('booster') == -1) {
                            $('#successPlanName').get(0).innerHTML = response[2];
                            $('#complete, #complete *').show();
                            $('#close').show();
                            // activate google
                            // urchinTracker('/onPage/album/upgrade/confirmation/'+response[2]);
                            // new google analytics code.
                            var pageTracker = _gat._getTracker("UA-331194-1");
                            pageTracker._trackPageview('/onPage/album/upgrade/confirmation/'+response[2]);
                        } else {
                            $('#annualDetails').hide();
                            $('#loading').hide();
                            $('#added, #added *').show();
                        }

						$('#loading').hide();
					} else if (response[0] == 2) {
                        $('#options').hide();
                        if (plan > 0) {
                            $('#upgradeError, #upgradeError *').show();
                        } else {
                            $('#boosterError, #boosterError *').show();
                        }
                    } else if (response[0] == 3) {
                        $('#loading').hide();
                        $('#ccError, #ccError *').show();
                        $('#close').show();
                    }
                }
            },
            error: function(t, type, exception) {
                $('#inlineUpgrade').css('height','182px');
                $('#loading').hide();
                $("#loading").hide();
                if (plan > 0) {
                    $("#upgradeError, #upgradeError *").show();
                } else {
                    $('#boosterError, #boosterError *').show();
                }
                $("#close").show();
            }
        });
    }
               
})();
