﻿
var currentCurrency = '';

util.addEvent(window, 'load', function() {
	var q = document.getElementsByTagName('input');
	var tind = 1;
	for(var i=0; i<q.length; i++) {
		if(q[i].id.indexOf('quantity_') > -1) {
			q[i].tabIndex = tind++;
			q[i].original = q[i].value;
			q[i].vid = q[i].id.replace(/quantity_/gi,'');
			document.getElementById('del_' + q[i].vid).onclick = deleteCheckoutItem;
			q[i].onblur = function() {
				quantityChange(null, this);
				if(isNaN(this.value * 1) || this.value == '') {
					this.value = this.value == '' ? '0' : this.original;
					quantityChange(null, this);
				}
			}
			q[i].onkeyup = q[i].onchange = quantityChange;
		}
	}
	if(document.getElementById('totalValue')) {
		var t = document.getElementById('totalValue').innerHTML + '';
		currentCurrency = t.replace(/[0-9.\-]/gi,'');
		
		var r = new RegExp(currentCurrency.replace(/\&/gi,'\\&').replace(/\$/gi,'\\$'), "gi");
	
		if(document.getElementById('deliveryValue'))
			{ document.getElementById('deliveryValue').original = document.getElementById('deliveryValue').innerHTML.replace(r,'') * 1; }
		if(document.getElementById('subTotalValue'))
			{ document.getElementById('subTotalValue').original = document.getElementById('subTotalValue').innerHTML.replace(r,'') * 1; }
		document.getElementById('totalValue').original = document.getElementById('totalValue').innerHTML.replace(r,'') * 1;
		document.getElementById('updateButton').className = 'disabled';
		document.getElementById('updateButton').disabled = true;
		document.getElementById('cancelButton').onclick = cancelChanges;
	}
});

function cancelChanges() {
	var tr = document.getElementsByTagName('tr');
	for(var i=0; i<tr.length; i++) tr[i].className = '';
	var q = document.getElementsByTagName('input');
	for(var i=0; i<q.length; i++) {
		if(q[i].id.indexOf('quantity_') > -1) {
			q[i].value = q[i].original;
			q[i].readOnly = false;
			quantityChange(null, q[i]);
		}
	}
	return false;
}

function deleteCheckoutItem() {
	this.parentNode.parentNode.className = 'deleted';
	var v = this.id.replace(/del_/gi,'');
	var q = document.getElementById('quantity_' + v);
	q.value = '0';
	quantityChange(null,q);
	q.readOnly = true;
}

function quantityChange(e, el) {
	if(!el) el = this;
	var q = el.original;
	var max = document.getElementById('maxQuantity_' + el.vid).value * 1;
	if (max > 100000) max = 100000;
	if(!isNaN(el.value * 1)) {
		q = el.value * 1;
		if ( q > max) { q = max; el.value = q; }
	}
	var unit = document.getElementById('uprice_' + el.vid);
	var total = document.getElementById('total_' + el.vid);
	total.innerHTML = toHTMLCurrency(currentCurrency) + util.toPrice(unit.value * q);
	total.className = q != el.original ? 'newvalue' : '';
	el.className = q != el.original ? 'newvalue' : '';
	calcTotals();
}

function toHTMLCurrency(v) {
	if(v == '£') return '&pound;';
	if(v == '€') return '&euro;';
	return v;
}

function recalcDelivery() {
	var tr = document.getElementsByTagName('tr');
	var first = 0;
	for(var i=0; i<tr.length; i++) {
		var vals = tr[i].getElementsByTagName('input');
		
		if(vals.length > 0) if(vals[0].value * 1 > 0) { dFirst = vals[2].value * 1; if(dFirst > first) first = dFirst; }
	}
	var total = first;
	var firstAdded = false;
	for(var i=0; i<tr.length; i++) {
		var vals = tr[i].getElementsByTagName('input');
		if(vals.length > 0) { 
			var v = vals[3].value * 1;
			var q = vals[0].value * 1;
			if(first == (vals[2].value * 1) && !firstAdded) {
				total = total + (v * (q - 1));
				firstAdded = true;
			} else {
				total = total + (v * q);
			}
		}
	}
	total = Math.round(total * 100) / 100;

	var del = document.getElementById('deliveryValue');
	if(del != null)
	{
		del.innerHTML = toHTMLCurrency(currentCurrency) + util.toPrice(total);
		if(total != del.original) {
			del.className = 'subtotalvalue newvalue';
		} else {
			del.className = 'subtotalvalue';
		}
	}
	return total;
}

function calcTotals() {
	var tr = document.getElementsByTagName('tr');
	var st = 0;
	for(var i=0; i<tr.length; i++) {
		var vals = tr[i].getElementsByTagName('input');
		if(vals.length > 0) {
			q = vals[0].value * 1;
			u = vals[1].value * 1;
			st = st + (q * u);
		}
	}
	var delCost = recalcDelivery();

	stot = document.getElementById('subTotalValue');
	tot = document.getElementById('totalValue');
	if(stot != null) stot.innerHTML = toHTMLCurrency(currentCurrency) + util.toPrice(st);
	tot.innerHTML = toHTMLCurrency(currentCurrency) + util.toPrice(st + delCost);

	if(util.toPrice(tot.original) != util.toPrice((st+delCost))) {
		if(stot != null) stot.className = 'subtotalvalue newvalue';
		tot.className = 'totalvalue newtotalvalue';
	} else {
		if(stot != null) stot.className = 'subtotalvalue';
		tot.className = 'totalvalue';
	}
	if(inSync()) {
		document.getElementById('updateButton').className = 'disabled';
		document.getElementById('updateButton').disabled = true;
		document.getElementById('cancelButton').style.display = 'none';
		document.getElementById('proceedLink').style.display = 'block';
	} else {
		document.getElementById('updateButton').className = '';
		document.getElementById('updateButton').disabled = false;
		document.getElementById('cancelButton').style.display = 'block';
		document.getElementById('proceedLink').style.display = 'none';
	}
}

function inSync() {
	var result = true;
	var q = document.getElementsByTagName('input');
	for(var i=0; i<q.length; i++) {
		if(q[i].id.indexOf('quantity_') > -1) {
			if(q[i].value.trim() != q[i].original.trim()) result = false;
		}
	}
	return result;
}

