// common.js
// copyright (c) 2002, Vallby InformationsSystem AB, Sweden

// global variables
var giMs;
var giSubmitCount;

///////////////////////////////
// string functions

function fsOnlyDig(sStr)
{
	var i;
	var n;
	var ch;
	var sRet;
	sRet = "";
	n = sStr.length;
	for (i=0; i < n; i++) {
		ch = sStr.substring(i,i+1);
		if (ch >= '0' && ch <= '9')
			sRet += ch;
	}
	return sRet;
}

function fsNoSpace(sStr)
{
	var i;
	var n;
	var ch;
	var sRet;
	sRet = "";
	n = sStr.length;
	for (i=0; i < n; i++) {
		ch = sStr.substring(i,i+1);
		if (ch != ' ')
			sRet += ch;
	}
	return sRet;
}

function fsTrim(sStr)
{
	var i, n;
	var ch;
	var iB, iE;
	var bB, bE;

	bB = bE = false;
	iB = iE = 0;

	n = sStr.length;

	if (n == 0)
		return "";

	for (i=0; i < n; i++) {
		ch = sStr.substring(i,i+1);
		if (ch != ' ') {
			bB = true;
			iE = i;
		} else {
			if (bB == false) iB++;
			iE = i;
		}
	}
	return sStr.substring(iB,iE+1);
}

function fsLeft(sStr,iLen)
{
	var sRet;
	var iCurlen;
	iCurlen = sStr.length;
	sRet = sStr.substring(0,Math.min(iCurlen,iLen));
	while (iCurlen < iLen)
		sRet += ' ';
	return sRet;
}

// base 1 i.e. fsRight("123",2) gives "23"
function fsRight(sStr,iPos)
{
	var sRet;
	var iCurlen;
	iCurlen = sStr.length;
	if (iPos > iCurlen)
		return "";
	else
		return sStr.substring(iPos-1,iCurlen);
}

function fbModule10(sStr)
{
	var sTmp;
	var n;
	var ix;
	var iWeight;
	var iCheckDig;
	var iCheckVal = 0;
	var iCheckSum = 0;
	
	sTmp = fsTrim(sStr);
	sTmp = fsOnlyDig(sTmp);
	n = sTmp.length - 1;
	iCheckDig = parseInt(sTmp.substring(n,n+1))

	for (ix = 0; ix < n; ix++) {

		if ((ix % 2) == 0)
			iWeight = 2;
		else
			iWeight = 1;

		iCheckVal = parseInt(sTmp.substring(ix,ix+1)) * iWeight;
		iCheckSum = iCheckSum + Math.floor(iCheckVal/10) + iCheckVal%10;

	}
	iCheckSum = (10 - (iCheckSum % 10)) % 10;

	if (iCheckSum != iCheckDig)
		return false;

	return true;
}

function fbEmailCheck(sStr)
{
	if (sStr.indexOf('@') < 0)
		return false;

	if (sStr.indexOf('.') < 0)
		return false;

	return true;
}

function fsFormat(sStr, sPat)
{
	var sRet;
	var i, n, j, k;
	var chp, chs;

	sRet = "";
	i = 0;
	j = 0;
	n = sStr.length;
	k = sPat.length;
	while (i < n && j < k) {
		chs = sStr.substring(i,i+1);
		chp = sPat.substring(j,j+1);
		if (chp == '#') {
			sRet += chs;
			i++;
		} else {
			sRet += chp;
		}
		j++;
	}
	return sRet;
}

////////////////////////////////
// SpecialFunction for timestamp

function fsTID()
{
  var sDate;
  sDate = new Date();
  return sDate.getTime();
}

function fsMilli()
{
  var sDate;
  sDate = new Date();
  return sDate.getMilliseconds();
}

///////////////////////////////
// Functions on an Window

function fwxZeroSubmitCount()
{
	giSubmitCount = 0;
	giMs = fsTID();
}

function fwxEnter()
{
	fwxZeroSubmitCount();
}

function fwxVerify()
{
	if ((fsTID() - giMs) > 1000) fwxZeroSubmitCount();
	return (++giSubmitCount == 1) ? true : false;
}

function fwxDefaultStatus(sText)
{
	window.defaultStatus = sText;
}

function fwbStatus(sText)
{
	window.status = sText;
	return true;
}

///////////////////////////////
// Functions on an Element

function feeCtrl(form,sName)
{
	var ctrl;
	var i;
	var n;
	n = form.elements.length;
	for	(i=0; i < n; i++) {
		ctrl = form.elements[i];
		if (ctrl.name == sName)
			return ctrl;
	}
	return null;	
}

function fexOnlyDig(ctrl)
{
	ctrl.value = fsOnlyDig(ctrl.value);
}

function fexNoSpace(ctrl)
{
	ctrl.value = fsOnlyDig(ctrl.value);
}

function fexToUpper(ctrl)
{
	ctrl.value = ctrl.value.toUpperCase();
}

function fexToLower(ctrl)
{
	ctrl.value = ctrl.value.toLowerCase();
}

function fexTrim(ctrl)
{
	ctrl.value = fsTrim(ctrl.value);
}

function febIsEmpty(ctrl)
{
	fexTrim(ctrl);
	if (ctrl.value.length < 1)
		return true;
	else
		return false;
}

function febEmailCheck(ctrl)
{
	return fbEmailCheck(ctrl.value);
}

function fexFormat(ctrl,pattern)
{
	ctrl.value = fsFormat(ctrl.value,pattern);	
}

function febCheckCivilRegNo(ctrl,iDigits)
{
	var bOK;
	var sTmp;

	sTmp = ctrl.value;
	fexOnlyDig(ctrl);

	bOK = true;
	if (ctrl.value.length != iDigits)
		bOK = false;
	else if (fbModule10(ctrl.value) == false)
		bOK = false;

	return bOK;
}

// countdown for a textbox
function fexMaxTextboxLen(ctrl,maxLength, ctrlCounter)
{
	if (ctrl.value.length > maxLength) { 
		ctrl.value = ctrl.value.substring(0,maxLength);
		charleft = 0;
    } else {
		charleft = maxLength - ctrl.value.length;
	}
	eval("ctrl.form." + ctrlCounter + ".value = charleft");
}

function getVar(sVar)
{
    var sCtrl = document.getElementById(sVar);
    if (sCtrl != null)
	return sCtrl.value;
    else
	return "";
}


// eof
