(function() {
    var disc_sum, delivery_sum, count_select, sum, delivery_type, full_price;
    var delivery_prices = {
	russia: {
	    price: 300,
	    exstore: {
		first: 0,
		next: 0
		},
		ground: {
		first: 180,
		next: 0
	    },
	    avia: {
		first: 250,
		next: 0
	    }
	},
	sng: {
	    price: 300,
		ground: {
		first: 200,
		next: 0
	    },
	    avia: {
		first: 250,
		next: 0
		}
	},
	europe: {
	    price: 10,
	    avia: {
		first: 5,
		next: 1
		}
	},
	world: {
	    price: 10,
	    avia: {
		first: 6,
		next: 1
		}
	}
    }

    function set(el, val) {
	el.innerHTML = val;
    }

    function get(el) {
	if (el.value == undefined) return el.innerHTML;
	return el.value;
    }

    function $(el) {
	if (typeof el == "string") return document.getElementById(el);
	return el;
    }

    function update_sum() {
	var types = get(delivery_type).split(',');
	var prices = delivery_prices[types[0]][types[1]];
	set(disc_sum, delivery_prices[types[0]].price*get(count_select));
	set(delivery_sum, prices.first + prices.next*(get(count_select)-1));
	set(sum, Math.ceil(get(delivery_sum)) + Math.ceil(get(disc_sum)));
	full_price.value = get(sum);
    }

    window.onload = function() {
	count_select = $("count_select");
	disc_sum = $("disc_sum");
	delivery_sum = $("delivery_sum");
	delivery_type = $("delivery_type");
	full_price = $("full_price");
	sum = $("sum");
	count_select.onchange = update_sum;
	delivery_type.onchange = update_sum;
	update_sum();
    }

})()

function validateFields(form, lang) {
    var messages = {
        rus: {
            full_name: 'Поле "Полное имя" обязательно для заполнения.',
            email: 'Вы указали неверный электронный адрес',
            country: 'Поле "Страна" обязательно для заполнения.',
            postcode: 'Поле "Индекс" обязательно для заполнения',
            city: 'Поле "Город" обязательно для заполнения.',
            address1: 'Поле "Адрес" обязательно для заполнения.'
        },
        eng: {
            full_name: 'Please, provide your full name.',
            email: 'Please, provide valid e-mail.',
            country: 'Please, provide your Country.',
            postcode: 'Please, provide your Zip/Postcode',
            city: 'Please, provide Town/City',
            address1: 'Please, provide your Address.'
        }
    }

    function validateCharField(id, lang) {
        field = document.getElementById(id);
        if (field.value == null || field.value == '') {
            alert(messages[lang][id]);
            field.focus();
            return false;
        }
        else return true;
    }

    function validateEmailField(id, lang) {
        field = document.getElementById(id);
        validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
        if (field.value == null || field.value == ''
            || field.value.search(validRegExp) == -1) {
            alert(messages[lang][id]);
            field.focus();
            return false;
        }
        else return true;
    }

    if (validateCharField('full_name', lang))
        if (validateEmailField('email', lang))
            if(validateCharField('country', lang))
                if(validateCharField('postcode', lang))
                    if(validateCharField('city', lang))
                        if(validateCharField('address1', lang))
                            return true;
    return false;
}
