var NoProductImageSizes =
{
    Size38x38: "38x38",
    Size50x50: "50x50",
    Size58x58: "58x58",
    Size76x76: "76x76",
    Size100x100: "100x100",
    Size173x173: "173x173",
    Size200x200: "200x200"
}

function SetNoFotoForProduct(elm, size)
{
    if (size == null)
    	elm.src = "/gfx/common/noimage.png";
    else
        elm.src = "/gfx/common/noimage." + size + ".png";
}

function SetNoFotoForDealer(elm)
{
	elm.src = "/gfx/common/noimagedealer.jpg";
}

function XpriserRedirect(url)
{
	document.location.href = unescape(url);
}

function menuOver(data)
{
	var subMenuDiv = document.getElementById("menuSub");
	
	if(subMenuDiv)
	{
		subMenuDiv.innerHTML = data;
		subMenuDiv.style.visibility = 'visible';
	}
}

function menuOut()
{
	var subMenuDiv = document.getElementById("menuSub");
	
	if(subMenuDiv)
	{
		subMenuDiv.style.visibility = 'hidden';

	}
}

function SetCSSClass(component, cssClass)
{
    var componentRef = document.getElementById(component);
    if (componentRef)
    {
        componentRef.className = cssClass;
    }
}

var compareHandler =
{
    url: "",
    productIDs: [],
    allowedToCompare: 4,
    // Default messages.
    allowedToCompareExceededMessage: "Du kan kun sammenligne 4 produkter af gangen.",
	noProductsSelectedMessage: "Du skal vælge mindst 2 produkter før du kan sammenligne.",

	getProductsAddedCount: function()
	{
		var productsAdded = 0;
        
        for (var i = 0; i < this.productIDs.length; i++)
        {
            if (this.productIDs[i] != null)
                productsAdded++;
        }

		return productsAdded;
	},

    onCheckBoxClick: function(checkBox, productID)
    {
		if (checkBox.checked)
		{
		    if (this.getProductsAddedCount() >= this.allowedToCompare)
            {
                alert(this.allowedToCompareExceededMessage);
                checkBox.checked = false;
                return;
            }
        
			this.productIDs.push(productID);
		}
		else
		{
			for (var i = 0; i < this.productIDs.length; i++)
			{
				if (this.productIDs[i] == productID)
					this.productIDs[i] = null;
			}
		}
    },
    
    redirectToComparePage: function(url)
    {
		if (this.getProductsAddedCount() < 2)
		{
			alert(this.noProductsSelectedMessage);
			return;
		}

        if (this.url.length > 0)
        {
            var queryStringItems = [];
            
            for (var i = 0; i < this.productIDs.length; i++)
            {
                if (this.productIDs[i] != null)
                    queryStringItems.push(this.productIDs[i]);
            }
        
            XpriserRedirect(this.url + queryStringItems.join(";"));
        }
    }
};

// EDB forsikrung. Effect product detail page.
$().ready(function() {
    var loanElement = $('.links .loan');
    var insuranceElement = $('.links .insurance');

    var price = (function() {
        var priceText = $('.title .price').text(); //"4.928,00 DKK";
        priceText = priceText.replace(".", "").replace(",", ".");
        return parseFloat(priceText);
    })();

    if (isNaN(price))
        return;

    if (loanElement.length == 1) {
        var paymentValue = (function() {
            var fv = 0;
            var nper = 72; // Løbetid
            var per = 12; // Terminer
            var produktRentesats = 18.5;
            var produktStiftsats = 8;
            var produktStiftMin = 500;
            var produktMinYdelse = 99;
            var pbsBeloeb = 15;
            var admBeloeb = 19;

            var stiftValue = Math.max((price / 100) * produktStiftsats, produktStiftMin);

            price += stiftValue;

            var rate = (produktRentesats) / (per * 100);
            var pmtValue;

            if (rate == 0) {
                pmtValue = -(fv + price) / nper;
            } else {
                var x = Math.pow(1 + rate, nper);
                pmtValue = -((rate * (fv + x * price)) / (-1 + x));
            }

            pmtValue = Math.max(-(pmtValue - admBeloeb - pbsBeloeb), produktMinYdelse);

            return Math.ceil(pmtValue);
        })();

        loanElement.text("Lån fra " + paymentValue + " kr");
        loanElement.attr("title", "Lån fra " + paymentValue + " kr. per måned");
    }

    if (insuranceElement.length == 1) {
        (/&cost=(\d+)/i).exec(insuranceElement.attr('href'));
        
        $.post("/services/InsuranceService.asmx/GetInsurancePremium", { cost: RegExp.$1 }, function(data) {
            var premium = data.lastChild.firstChild.nodeValue;
            insuranceElement.text("Forsikring fra " + premium + " kr");
        }, "xml");
    }
});

function conv_number(expr, decplaces) {
    var str = "" + Math.round(eval(expr) * Math.pow(10, decplaces));
    while (str.length <= decplaces) str = "0" + str;
    var decpoint = str.length - decplaces;
    return (str.substring(0, decpoint) + "." + str.substring(decpoint, str.length));
}

(function ($) {
    $.fn.trackGo = function () {
        this.click(function() {
            var $o = $(this);
            var url = $o.attr("href");
            window.open(url);
            var vendorname = $o.attr("data-vendorname");
            var productname = $o.attr("data-productname");
            _gaq.push(['_trackEvent', 'Go Product', vendorname, productname]);
            if(document.createElement) {
                var qi=document.createElement("IFRAME");
                qi.style.display = "none";
                qi.setAttribute("src", xpriser.QuantadsTrackingUrl);
                document.body.appendChild(qi);
            };
            return false;
        });
        return this;
    };
    $.fn.gaEvent = function () {
        this.click(function() {
            var $o = $(this);
            var url = $o.attr("href");
            window.open(url);
            var category = $o.attr("data-category");
            var action = $o.attr("data-action");
            var label = $o.attr("data-label");
            _gaq.push(['_trackEvent', category, action, label]);
            return false;
        });
        return this;
    };
})(jQuery);

jQuery(function ($) {
    $(".js-track-go").trackGo();
    $(".js-ga-event").gaEvent();
});
