// 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();
}

///////////////////////////////
// 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 MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

// eof
