/**
 * InfoTree javascript
 *
 * Copyright 2009 Avot Media BV
 */
var previewOpen = false;
function checkFormat(pID, pName)
{
	if ($('productSelect').getSelected()[0].value.toInt() > 0) {
		document.location.href = window.baseurl + 'webshop/editor/' + pID.toInt() + '/' + $('productSelect').getSelected()[0].value.toInt() + '/' + pName;
	} else {
		alert('U heeft nog geen formaat gekozen');
	}
}

function checkShoppingCart()
{
	var cartConfirmed = confirm('Weet u zeker dat u het ontwerp wil toevoegen aan uw portfolio? U kunt het ontwerp namelijk niet meer aanpassen als deze aan de portfolio is toegevoegd.');
	if (cartConfirmed) this.getEditorImage();
	return false;
}

function getEditorPreview()
{
	if (previewOpen === false) {
		$('it_editor').showPreloader('generating preview');
		$('it_editor').getPreview();
		$('preview_button').set('value', $('preview_button').get('value').replace('bekijken', 'sluiten'));
		previewOpen = true;
	} else {
		$('preview_button').set('value', $('preview_button').get('value').replace('sluiten', 'bekijken'));
		$('it_editor').closePreview();
		previewOpen = false;
	}
	return false;
};

function setEditorPreview(previewDataString)
{
	window.open(window.baseurl + 'webshop/preview/' + previewDataString);
};

function getEditorImage()
{
	$('portfolioAddForm[Submit]').disabled = true;
	$('it_editor').showPreloader('generating image');
	$('it_editor').getImage();
	return false;
};

function submitEditorImage(imageFilename)
{
	$('portfolioAddForm[Image]').set('value', imageFilename);
	$('portfolioAddForm').submit();
};

function addPortfolioToCart(ProductID, FormatID, Image)
{
	if ($chk(ProductID) && $chk(FormatID) && $chk(Image)) {
		$('cartAddForm[ProductID]').set('value', ProductID);
		$('cartAddForm[FormatID]').set('value', FormatID);
		$('cartAddForm[Image]').set('value', Image);
		$('cartAddForm').submit();
	}
};

function updateCartQuantity(CartID, Type)
{
	if (CartID.toInt() > 0 && $('cart_subtotal_' + CartID) && $('cart_subtotal_text_' + CartID)) {
		var cartItemPrice = $('cart_price_' + CartID).get('text').toFloat();
		var cartItemQuantity = $('cart_subtotal_text_' + CartID).get('value').toInt();
		if (Type.toInt() === 1) {
			/* Do nothing, just update field */
		} else if (Type.toInt() === 2) {
			cartItemQuantity++;
			$('cart_subtotal_text_' + CartID).set('value', cartItemQuantity.toInt());
		} else if (Type.toInt() === 3) {
			cartItemQuantity--;
			if (cartItemQuantity.toInt() === 0) cartItemQuantity = 1;
			$('cart_subtotal_text_' + CartID).set('value', cartItemQuantity.toInt());
		}
		$('cart_subtotal_' + CartID).set('text', number_format((cartItemPrice * cartItemQuantity).toFloat(), 2, ',', '.'));
		calculateCartTotal();
		/* Do AJAX request */
		var cartQuantityRequest = new Request({url: window.baseurl + 'webshop/cart/quantity/' + CartID + '/' + cartItemQuantity.toInt(), async: false}).send();
	}
}

function calculateCartTotal()
{
	var cartTotal = 0;
	$$('.cart_subtotal').each(function(CartItem)
	{
		var cartItemPrice = $(CartItem.get('id').replace('cart_subtotal_', 'cart_price_')).get('text').toFloat();
		var cartItemQuantity = $(CartItem.get('id').replace('cart_subtotal_', 'cart_subtotal_text_')).get('value').toInt();
		cartTotal += (cartItemPrice * cartItemQuantity).toFloat();
	});
	$('cart_total').set('text', number_format(cartTotal, 2, ',', '.'));
}

function number_format (number, decimals, dec_point, thousands_sep) {
    // Formats a number with grouped thousands
    //
    // version: 906.1806
    // discuss at: http://phpjs.org/functions/number_format
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +     improved by: davook
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Jay Klehr
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *     example 10: number_format('1.20', 2);
    // *     returns 10: '1.20'
    // *     example 11: number_format('1.20', 4);
    // *     returns 11: '1.2000'
    // *     example 12: number_format('1.2000', 3);
    // *     returns 12: '1.200'
    var n = number, prec = decimals;

    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };

    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;

    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;

    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;

    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;

        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }

    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}