﻿function CalcExc(cnInc, stExc, stVat) {
	var cnExc = document.getElementById(stExc);
	var cnVat = document.getElementById(stVat);
	if (cnInc.value == '')
	{
		cnExc.value = '';
		return;
	}


	var inVatIndex = cnVat.selectedIndex;
	if (cnVat.options.length > arVatRates.length) {
		inVatIndex = inVatIndex - 1;
		if (inVatIndex < 0)
			return;
	}


	if (CheckIsNum(cnInc.value)) {

		cnExc.value = (CalcVatStrip(cnInc.value) / (1 + arVatRates[inVatIndex] / 100)).toFixed(2);
		cnInc.value = (CalcVatStrip(cnInc.value) / 1).toFixed(2);
	}
}

function CheckIsNum(value) {
	return !isNaN(value);
}

function CalcExcInput(cnInc, stExc, stVat) {
	var cnExc = document.getElementById(stExc);
	var cnVat = document.getElementById(stVat);

	if (cnInc.value == '') {
		cnExc.value = '';
		return;
	}
	if (CheckIsNum(cnExc.value)) {
		cnExc.value = (CalcVatStrip(cnInc.value) / (1 + cnVat.value / 100)).toFixed(2);
		cnInc.value = (CalcVatStrip(cnInc.value) / 1).toFixed(2);
	}
}

function CalcInc(stInc, cnExc, stVat) {
	var cnInc = document.getElementById(stInc);
	var cnVat = document.getElementById(stVat);
	if (cnExc.value == '')
	{
		cnInc.value = '';
		return;
	}

	var inVatIndex = cnVat.selectedIndex;
	if (cnVat.options.length > arVatRates.length) {
		inVatIndex = inVatIndex - 1;
		if (inVatIndex < 0)
			return;
	}

	var dcExc = (CalcVatStrip(cnInc.value) / (1 + arVatRates[inVatIndex] / 100)).toFixed(2);
	if (dcExc != CalcVatStrip(cnExc.value))
	{
		cnInc.value = (CalcVatStrip(cnExc.value) * (1 + arVatRates[inVatIndex] / 100)).toFixed(2);
	}
	cnExc.value = (CalcVatStrip(cnExc.value) / 1).toFixed(2);
}

function CalcIncInput(stInc, cnExc, stVat) {
	var cnInc = document.getElementById(stInc);
	var cnVat = document.getElementById(stVat);

	if (cnExc.value == '') {
		cnInc.value = '';
		return;
	}

	var dcExc = (CalcVatStrip(cnInc.value) / (cnVat.value / 100)).toFixed(2);
	if (dcExc != CalcVatStrip(cnExc.value)) {
		cnInc.value = (CalcVatStrip(cnExc.value) * (1 + cnVat.value / 100)).toFixed(2);
	}
	cnExc.value = (CalcVatStrip(cnExc.value) / 1).toFixed(2);
}

function CalcVat(stInc, stExc, cnVat)
{
	var cnInc = document.getElementById(stInc);
	var cnExc = document.getElementById(stExc);
	if (cnInc.value == '')
		return;

	var inVatIndex = cnVat.selectedIndex;
	if (cnVat.options.length > arVatRates.length) {
		inVatIndex = inVatIndex - 1;
		if (inVatIndex < 0)
			return;
	}

	cnExc.value = (CalcVatStrip(cnInc.value) / (1 + arVatRates[inVatIndex] / 100)).toFixed(2);
}

function CalcAllVat(arInc, arExc, cnVat)
{
	for (var i = 0; i < arInc.length; i++)
	{
		CalcVat(arInc[i], arExc[i], cnVat);
	}
}

function CalcVatStrip(stIn)
{
	return (stIn.replace(/[,]/g, ""));
}


/* ************************************************* Product Tabs ************************************************* */
var arTabs = new Array();
var obTabSelected;
var obTabAssoc;
function TabSelect(obTab, stAssoc)
{
	if ((obTabSelected != null) && (obTabAssoc != obTab))
	{
		obTabSelected.className = "";
		obTabSelected.parentNode.className = "";
		obTabAssoc.style.display = "none";
	}
	obTabSelected = obTab;
	obTabSelected.className = "Selected";
	obTabSelected.parentNode.className = "Selected";
	obTabAssoc = document.getElementById(stAssoc);
	obTabAssoc.style.display = "block";
}

/*
 *	Selects the specified tab.
 * --------------------------------------------------------------------------------------
 * + inTabId - The ID of the tab (in the DataBase)
 */
function SelectTabById(inTabId)
{
	for(var inCount = 0; inCount < arTabs.length; inCount++)
	{
		if (arTabs[inCount][0] == inTabId)
		{
			TabSelect(
				document.getElementById(arTabs[inCount][1]),
				arTabs[inCount][2]
			);
		}
	}
}

function elementOffsetTop(el)
{
	var inOffset = el.offsetTop;
	var obParent = el.offsetParent;
	while (obParent!=null)
	{
		inOffset += obParent.offsetTop;
		obParent=obParent.offsetParent;
	}
	return inOffset;
}

function elementOffsetLeft(el)
{
	var inOffset = el.offsetLeft;
	var obParent = el.offsetParent;
	while (obParent!=null)
	{
		inOffset += obParent.offsetLeft;
		obParent=obParent.offsetParent;
	}
	return inOffset;
}


/* ************************************************** Help Icons ************************************************** */
function displayHelp(e)
{
	if (!e) var e = window.event;
	var tg = (window.event) ? e.srcElement : e.target;
	var helpblock = tg.nextSibling;
	var obDoc = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;

	helpblock = helpblock.childNodes[helpblock.childNodes.length-1];
	if (helpblock.style.display == 'block')
	{
		helpblock.style.display = 'none';
		return;
	}

	helpblock.style.display = 'block';

	var pointer = helpblock.childNodes[helpblock.childNodes.length-1].childNodes[helpblock.childNodes.length-1];

	var inButtonLeft = elementOffsetLeft(tg);
	var windowRight = (document.all && !window.opera)? obDoc.scrollLeft+obDoc.clientWidth : window.pageXOffset+window.innerWidth-15;

	var inOffset = inButtonLeft + (helpblock.offsetWidth / 2) - windowRight;
	var inOffset2 = inButtonLeft + (helpblock.offsetWidth) - windowRight;

	helpblock.style.left = '-' + (helpblock.offsetWidth/2) + 'px';
	pointer.style.marginLeft = (helpblock.offsetWidth/2)-30 + "px";

	helpblock.style.top = '4px';
	console.log(inOffset);
	if (inOffset > 0)
	{
		helpblock.style.left = (-inOffset2-16) + "px";
		pointer.style.marginLeft = inOffset2-14 + "px";
	}
}

function leaveHelp(e)
{
	if (!e) var e = window.event;
	var tg = (window.event) ? e.srcElement : e.target;

	if (tg.nodeName != 'DIV') return;
	if (tg.className != 'HelpM') return;

	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	if (reltg)
	{
		while (reltg != tg && reltg.nodeName != 'BODY')
			reltg = reltg.parentNode
		if (reltg == tg) return;
	}
	hideHelp(tg);
}

function hideHelp(tg)
{
	while (tg.className != 'Help')
		tg = tg.parentNode;
	tg.childNodes[0].style.display = 'none';
}