
/**
 * data egy pozitív egész szám?
 *
 * @param data String
 */
function checkCount(data)
{
    return (parseInt(data) == data) && (parseInt(data) > 0);
}

/**
 * Érvényes e-mail cím lehet a string?
 *
 * @param str String
 */
function checkEmail(str){
	var filter=/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(str);
}

/**
 * Átalakítja a bemeneti számot a megjelenítendő összeggé.
 * Például 3000 >>> 3.000 Ft
 *
 * @param amount Integer
 */
function formatAmount(amount)
{
	amount = String(amount);
	var regexp = new RegExp('(-?[0-9]+)([0-9]{3})');
	while(regexp.test(amount))
	{
		amount = amount.replace(regexp, '$1.$2');
	}
	return amount + ' Ft';
}

/**
 * Beállítja az összeg mezőt (csak avatar esetén).
 *
 */
function getAmountAvatar()
{
	var unit_price = document.getElementById('order-unit_price');
	var product_count = document.getElementById('order-product_count');
    var amount_gross = document.getElementById('order-amount_gross');
	amount_gross.value = unit_price.value * product_count.value;

	// Egy külön span tag-ben van a látható összeg.
	var user_amount_gross = document.getElementById('user-order-amount_gross');
	user_amount_gross.innerHTML = (parseInt(product_count.value) > 0) ? formatAmount(amount_gross.value) : "Nem adott meg darabszámot.";
}

/**
 * Beállítja az összeg mezőt (kessler / treben esetén).
 *
 */
function getAmount()
{
	var unit_price = document.getElementById('order-unit_price');

	var amount_gross = document.getElementById('order-amount_gross');
	// Egy külön span tag-ben van a látható összeg.
	var user_amount_gross = document.getElementById('user-order-amount_gross');

	//kötetekhez
	var opt4 = document.getElementById('order-payment_notes-d');
	var volume_count = document.getElementById('order-volume_count');
	var volume_sum = document.getElementById('order-volume_sum');

	if ( opt4.checked == true )
	{
		volume_sum.value = 995 * parseInt(volume_count.value);
		amount_gross.value = parseInt(unit_price.value) + parseInt(volume_sum.value);
		user_amount_gross.innerHTML = (parseInt(volume_count.value) > 0) ? formatAmount(amount_gross.value) : "Nem adott meg darabszámot.";
	}
	else
	{
		var product_count = 1;
		amount_gross.value = parseInt(unit_price.value) + parseInt(volume_sum.value);
		user_amount_gross.innerHTML = formatAmount(amount_gross.value);
	}

}

//megváltoztatja az árat a kötetszámnak megfelelően
function changeVolume(volume_price)
{
	var volume_sum = document.getElementById('order-volume_sum');
	var volume_count = document.getElementById('order-volume_count');
	var opt4 = document.getElementById('order-payment_notes-d');

	if (opt4.checked == true)
	{
		//add
		volume_sum.value = parseInt(volume_price) * parseInt(volume_count.value);
	}
	if (opt4.checked == false)
	{
		//remove
		volume_sum.value = 0;
	}
	getAmount();
}

/**
 * Megváltoztatja az egységárat a választott opcióknak megfelelően.
 *
 * @param price Integer
 */
function changeUnitPrice(price,obj)
{
	var unit_price = document.getElementById('order-unit_price');

	var opt1 = document.getElementById('order-payment_notes-a');
	var opt2 = document.getElementById('order-payment_notes-b');
	var opt3 = document.getElementById('order-payment_notes-c');
	var opt4 = document.getElementById('order-payment_notes-d');

	opt2.disabled = ( opt1.checked == true ) ? true : false;
	opt1.disabled = ( opt2.checked == true ) ? true : false;

	if (document.getElementById(obj.id).checked == true)
	{
		//add

		unit_price.value = parseInt(unit_price.value) + parseInt(price);
		//alert(parseInt(unit_price.value));

	}
	if (document.getElementById(obj.id).checked == false)
	{
		//remove
		unit_price.value = parseInt(unit_price.value) - parseInt(price);
	}

	getAmount();
}

/**
 * Beállítja egy termék egységárát.
 *
 * @param price Integer
 */
function setUnitPrice(price)
{
	var unit_price = document.getElementById('order-unit_price');
	unit_price.value = price;
	getAmount();
}

function checkVolume(price,obj)
{
	var amount = obj.value;
	var error;

	if ( (parseInt(amount) >= 2) && (parseInt(amount) < 20) )
	{
		error = false;
		var unit_price = document.getElementById('order-unit_price');
		unit_price.value = price;
	}
}

/**
 * Ellenőrzi, hogy a vásárló megadott-e minden adatot.
 * Ha nem, figyelmezteti és false-al tér vissza.
 *
 */
function checkOrderForm(form)
{
	if(document.getElementById('order-name').value.length < 2)
	{
		alert('Kérjük, töltse ki a név mezőt!');
		document.getElementById('order-name').focus();
		return false;
	}
	if(document.getElementById('order-inv_address').value.length < 6)
	{
		alert('A számlázási cím mezőnek legalább 6 karaktert kell tartalmaznia!');
		document.getElementById('order-inv_address').focus();
		return false;
	}
	if(document.getElementById('order-ship_address').value.length < 6)
	{
		alert('A postázási cím mezőnek legalább 6 karaktert kell tartalmaznia!');
		document.getElementById('order-ship_address').focus();
		return false;
	}
	if(document.getElementById('order-phone').value.length < 7)
	{
		alert('A telefonszám mezőnek legalább 7 karaktert kell tartalmaznia!');
		document.getElementById('order-phone').focus();
		return false;
	}
	if(!checkEmail(document.getElementById('order-email').value))
	{
		alert('Kérjük, adjon meg e-mail címet!');
		document.getElementById('order-email').focus();
		return false;
	}
	if(!checkCount(document.getElementById('order-product_count').value))
	{
		alert('Nem adott meg darabszámot.');
		document.getElementById('order-product_count').focus();
		return false;
	}
	if (document.getElementById('order-volume_count'))
		if(!checkCount(document.getElementById('order-volume_count').value) && document.getElementById('order-payment_notes-d').checked == true)
		{
			alert('Nem adott meg darabszámot.');
			document.getElementById('order-volume_count').focus();
			return false;
		}
	if(parseInt(document.getElementById('order-amount_gross').value) == 0)
	{
		alert('Kérjük, válassza ki az egyik opciót!');
		return false;
	}

	form.submit();
}

function getPartAmount(unit_price, count_id)
{
    var count = document.getElementById(count_id).value;
    // Pozitív egész szám a count értéke?
    if(!checkCount(count) && (count != "")) {
        document.getElementById(count_id).value = "";
        return 0;
    }
    return count * unit_price;
}

/**
 * Kizárja egymást a két vásárlási opció.
 */
function excludeOrderOptions(id_a, id_b)
{
    var mode_a = document.getElementById(id_a);
    var mode_b = document.getElementById(id_b);
    mode_a.disabled = mode_b.checked;
	mode_b.disabled = mode_a.checked;
}

/**
 * Beállítja a fizetendő összeget a "Királyok" és a "Remekművek és ritkaságok" oldalon.
 */
function getAmount2(productId, excludes)
{
	// Az első és a második opció kizárja egymást.
	if( typeof excludes == 'undefined' )
		excludes = [['payment_mode_a', 'payment_mode_b']];
    
    if( excludes )
    {
    	for(var i=0, l=excludes.length ; i<l ; i++)
    		excludeOrderOptions.apply(null, excludes[i]);
    }

    // Kiszámolja a végösszeget.
    var summAmount = 0
    for (var i in products[productId]){
        //console.log(productId, i);
        if(document.getElementById('payment_mode_' + i)
           && document.getElementById('payment_mode_' + i).checked) {
            summAmount += getPartAmount(products[productId][i], 'count_' + i);
        }
    }
    document.getElementById('summ_amount').innerHTML = formatAmount(summAmount);
}

/**
 * Kiszámolja a végösszeget.
 */
function summarizeAmount(productId)
{
    var summAmount = 0;
    for (var i in products[productId]){
        if(document.getElementById('payment_mode_' + i).checked) {
            summAmount += getPartAmount(products[productId][i], 'count_' + i);
        }
    }
    document.getElementById('summ_amount').innerHTML = formatAmount(summAmount);
}


function getAmountById(productId)
{
    switch(productId){
        case 'nagycsatak':
            // Beállítja a fizetendő összeget a "Nagy csaták" oldalon.
            // A második és a harmadik opció kizárja egymást.
            excludeOrderOptions('payment_mode_b', 'payment_mode_c');
            summarizeAmount(productId);            
        break;
        case 'kessler2':
            // Beállítja a fizetendő összeget a "A háború kutyái 21.-32. kötet" oldalon.
            // Az első és második opció kizárja egymást.
            excludeOrderOptions('payment_mode_a', 'payment_mode_b');
            summarizeAmount(productId);            
        break;    
    }
}

//
///**
// * Beállítja a fizetendő összeget a "Nagy csaták" oldalon.
// */
//function getAmount3(productId)
//{
//    // A második és a harmadik opció kizárja egymást.
//    excludeOrderOptions('payment_mode_b', 'payment_mode_c');
//    summarizeAmount(productId);
//}

/**
 * Beállítja a fizetendő összeget a "Wass Albert" oldalon.
 */
function getAmount4(productId)
{
    // A második és a harmadik opció kizárja egymást.
    excludeOrderOptions('payment_mode_b', 'payment_mode_c');
    var summAmount = 0;
    for (var i in products[productId]){
        if(document.getElementById('payment_mode_' + i) && document.getElementById('payment_mode_' + i).checked) {
            var amount = 0;
            if(i == 'b'){
                amount = (document.getElementById('exclude_first_b').checked) ? 36760 : products[productId][i];
            }
            else if(i == 'c'){
                amount = (document.getElementById('exclude_first_c').checked) ? 38740 : products[productId][i];
            }
            else {
                amount = products[productId][i];
            }
            summAmount += getPartAmount(amount, 'count_' + i);
        }
    }
    document.getElementById('summ_amount').innerHTML = formatAmount(summAmount);
}

/**
 * Beállítja a fizetendő összeget a "Királyok" oldalon.
 */
function getAmount5(productId)
{
    // A második és a harmadik opció kizárja egymást.
    excludeOrderOptions('payment_mode_a', 'payment_mode_b');
    var summAmount = 0;
    for (var i in products[productId]){
        if(document.getElementById('payment_mode_' + i) && document.getElementById('payment_mode_' + i).checked) {
            var amount = 0;
            if(i == 'a'){
                amount = (document.getElementById('exclude_first_a').checked) ? products[productId]['a_exclude_first'] : products[productId][i];
            }
            else {
                amount = products[productId][i];
            }
            summAmount += getPartAmount(amount, 'count_' + i);
        }
    }
    document.getElementById('summ_amount').innerHTML = formatAmount(summAmount);
}

function checkForm2(form)
{
    var warning_text = "Az összes mezőt ki kell tölteni a rendeléshez. \n";
	if(document.getElementById('order-name').value.length < 2)
	{
		alert(warning_text + 'Kérjük, töltse ki a név mezőt!');
		document.getElementById('order-name').focus();
		return false;
	}
	if(document.getElementById('order-inv_address').value.length < 6)
	{
		alert(warning_text + 'A számlázási cím mezőnek legalább 6 karaktert kell tartalmaznia!');
		document.getElementById('order-inv_address').focus();
		return false;
	}
	if(document.getElementById('order-ship_address').value.length < 6)
	{
		alert(warning_text + 'A postázási cím mezőnek legalább 6 karaktert kell tartalmaznia!');
		document.getElementById('order-ship_address').focus();
		return false;
	}
	if(document.getElementById('order-phone').value.length < 7)
	{
		alert(warning_text + 'A telefonszám mezőnek legalább 7 karaktert kell tartalmaznia!');
		document.getElementById('order-phone').focus();
		return false;
	}
	if(!checkEmail(document.getElementById('order-email').value))
	{
		alert(warning_text + 'Kérjük, adjon meg e-mail címet!');
		document.getElementById('order-email').focus();
		return false;
	}
	if(document.getElementById('summ_amount').innerHTML == "0 Ft")
	{
		alert(warning_text + 'Kérjük, válassza ki az egyik opciót!');
		return false;
	}
	form.submit();
}

